C语言:
Codee#11240
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 实验平台: ST 官方三合一套件
+ 硬件 : STM8S105S6T6C
+ 开发平台: IAR For STM8 1.10
+ 仿真器 : ST-Link
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "stm8s.h"
/*******************************************************************************
* ==时钟初始化函数==
* CLK_DeInit(); --> 复位时钟寄存器
* CLK_HSICmd(ENABLE); --> 使能内部高速时钟
* CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2); --> 配置内部高速时钟(时钟分频器:2分频)
* CLK_ClockSecuritySystemEnable(); --> 开启时钟安全系统
*******************************************************************************/
void CLK_INIT(void)
{
CLK_DeInit();
CLK_HSICmd(ENABLE);
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2);
CLK_ClockSecuritySystemEnable();
}
/*******************************************************************************
* ==I/O口初始化函数==
* GPIO_DeInit(); --> 复位I/O端口 D
* GPIO_Init(GPIOD , GPIO_PIN_7 , GPIO_MODE_IN_PU_IT);
--> 使能PORTD_7, 设置为 输入 ,上拉 ,带中断
* GPIO_Init(GPIOD , GPIO_PIN_0 , GPIO_MODE_OUT_PP_LOW_SLOW);
--> 使能PORTD_0, 设置为 输出,推挽式 ,低电平 ,低速率
*******************************************************************************/
void GPIO_INIT(void)
{
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD , GPIO_PIN_7 , GPIO_MODE_IN_FL_IT);
GPIO_Init(GPIOD , GPIO_PIN_0 , GPIO_MODE_OUT_PP_LOW_SLOW); // LED
}
/*******************************************************************************
* ==外部中断初始化函数==
* EXTI_DeInit(); --> 初始化寄存器
* EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD , EXTI_SENSITIVITY_FALL_ONLY); --> 设定下降沿触发外部中断
*******************************************************************************/
void EXTI_INIT(void)
{
EXTI_DeInit();
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD , EXTI_SENSITIVITY_FALL_ONLY);
}
/*******************************************************************************
* ==MAIN 函数==
* 初始化 时钟
* 初始化 端口
* 初始化 外部中断触发方式
* 使能全局中断
*******************************************************************************/
void main(void)
{
CLK_INIT();
GPIO_INIT();
EXTI_INIT();
enableInterrupts();
while(1);
}
/*******************************************************************************
* ==中断服务函数 函数==
* PORTD_7是外部最高优先级的中断源(TLI)
* 按下按键LED亮,松开按键则LED灭
*******************************************************************************/
#pragma vector=2
__interrupt void TLI_IRQHandler(void)
{
GPIO_WriteReverse(GPIOD,GPIO_PIN_0); //翻转 管脚电平
}
关键字:STM8 GPIO 外部中断输入
引用地址:
STM8_GPIO 外部中断输入
推荐阅读最新更新时间:2024-03-16 15:13
STM32G0技术详解 _ GPIO-EXTI-系统DMA
STM32G0 的复用率是很高的,更多的引脚可以被当做 GPIO引脚 来使用。 G0的GPIO模块与F0的类似,主要有以下 区别 STM32F0系统架构 STM32G0系统架构 主要特性 双向操作最多达60个I/O引脚,从GPIOA~GPIOF共5个端口,每个端口最多16个I/O引脚,全部具有外部中断和唤醒功能,使用BSRR和BRR寄存器进行原子操作(置位和复位),每个端口独立配置。 GPIOx直接挂在IOPORT总线上。 大多数I/O引脚能够支持5V容忍。 引脚的基本结构 操作模式 输入模式:悬浮(无上下拉电阻),输入上拉/下拉,模拟输入模式。 输出模式:推挽,带有可选上拉/下拉的开漏。
[单片机]
IAR建立STM8工程
其中的几个点: 预处理Preprocessor - 添加路径,这个是头文件路径 STM8和STM32必须要预编译型号 下面的是问题: 路径有中文的问题 会出现以上的错误,导致一系列的问题 关闭源文件再次打开字体变化了 如图的√去掉就可以了,因为添加了中文的注释,软件是英文的,字符转换的问题 接下来来是调试问题 连接不上的问题,查看驱动,如果是显示Unknown Devicer,重装驱动也还是一样的,那么应该是ST-LINK数据线出问题,更换数据线尝试 连接上了,但是没有办法下载程序,出现如下的错误 给STM8外加电源,如果不行尝试 Failed to set configuration with MCU nam
[单片机]
飞思卡尔16位单片机(三)——GPIO输出功能测试
一、GPIO介绍 GPIO是单片机最常用的功能,XEP100单片机的并行I/O的资源很丰富,XEP100的IO有PORTA、PORTB、PORTH、PORTJ、PORTM、PORTP、PORTS、PORTT、PORTK和PORTE共10组IO。这些I/O口除了具有通用I/O功能外,还分别具有专用I/O的功能。可以根据需要进行设置,专用I/O功能启用后,通用I/O功能自动关闭。 在使用单片机的并行I/O时要进行一些设置,主要的设置如下所示: 1功能设置 每个I/O子系统都有一个功能设置寄存器,其中的几个位用于部分或者全部引脚的功能设定,设定为专用功能后,方向设置功能可能自然禁止,但上拉、下拉及降功率驱动功能一般仍然有效,具体
[单片机]
Linux下s3c6410的GPIO操作(1)
1、arch/arm/plat-s3c64xx/gpiolib.c文件中有如下: arch_initcall(s3c64xx_gpiolib_init);这个应该实在系统初始化时调用。 static __init int s3c64xx_gpiolib_init(void) { s3c64xx_gpiolib_add(gpio_4bit, ARRAY_SIZE(gpio_4bit), s3c64xx_gpiolib_add_4bit); s3c64xx_gpiolib_add(gpio_4bit2, ARRAY_SIZE(gpio_4bit2), s3c64xx_gpiolib_add_4bit2);
[单片机]
STM32学习之GPIO详解
GPIO: STM32 的(64引脚的)IO口一共有3个,分别是PA、PB、PC. STM32 的IO端口可以由软件配置成8种模式: 1,输入浮空 2,输入上拉 3,输入下拉 4,模拟输入 5,开漏输出 6,推挽输出 7,推挽复用功能 8,开漏复用功能 STM32 的每个IO端口都有7个寄存器来控制。他们分别是:配置模式的2个32位的端口配置寄存器CRL和CRH;2个32位的数据寄存器IDR和ODR;1个32位的置位/复位寄存器BSRR;一个16位的复位寄存器BRR;1个32位的锁存寄存器LCKR;我们常用的IO端口寄存器只有4个:CRL、CRH、IDR、ODR。 注意(在配置 ST
[单片机]
通用输入输出口(GPIO)
1概述 端口 I/O端口主要功能是用于内部单片机和外设进行通信的媒介。一个端口最多有8个引脚。 引脚 每个引脚都是独立的,也就是说当我们对其中一个引脚进行操作的时候不会影响到其他引脚。我们可以对引脚单独设置为数字输入或者数字输出。其中有些引脚还可以用着模拟输入和和外设中断。同一时刻只有一个功能映射到同一个引脚。 GPIO主要功能(我只列举我比较陌生的) 输入兼容5v电压 I/O口工作电压范围为1.6V到Vddiomax I/O口的配置和使用 IO口常用的寄存器有5个ODR IDR DDR CR1 CR2 数据输出寄存器ODR 输入寄存器IDR 和方向寄存器DDR 控制寄存器1CR1 控制寄存器2CR2
[单片机]
STM8实现万年历(高亮调时)
一、设计内容: 本次设计使用stm8s实现简单的万年历,主要功能是显示时间、调时、设置闹铃。另外还添加了游戏辅助功能。 二、设计要求: 1、主控芯片使用stm8s 2、使用pcb板 3、至少要实现数码管显示时间和调时功能 三、设计过程: 设计总共分为两块,硬件设计和软件设计。首先是构思要实现的功能,然后了解硬件资源再进行软件设计。所以下面首先介绍硬件设计。 1、硬件设计部分 A、元件清单 器件名 型号 数量 Lcd 12864 1 DS1302 1 晶振 32.768KHz 1 Stm8s105s4 1 按键 5 二极管 1n4
[单片机]
LPC2478 GPIO 输出控制
void main(){ //将P3.25 P3.28 P3.26 P3.29配置成输出模式,默认为上拉输出 //初始化 PINSEL7&=(~(3 18)); FIO3DIR |= 1 25; //P3.25/OUT DIR PINSEL7&=(~(3 24)); FIO3DIR |= 1 28; //P3.28/OUT DIR PINSEL7&=(~(3 20)); FIO3DIR |= 1 26; //P3.26/OUT ENA PINSEL7&=(~(3 26)); FIO3DIR |= 1 29; //P3.29/OUT ENA //输出高低电平 FIO3CLR |= 1 26; FIO3SET |=
[单片机]