历史上的今天
今天是:2024年12月14日(星期六)
2019年12月14日 | STM8L051F3_02_EXTI应用
2019-12-14 来源:eefocus
本章介绍STM8L051F3的EXTI相关知识,内容分为以下几部分:
EXTI简介
KEY外部中断检测
1、EXTI简介
EXTI也是属于GPIO的知识点,应用比较广泛。STM8L051F3每个I/O口在输入模式下都能配置为中断,在这个配置下,一个信号沿或电平输入到I/O口上将产生一个中断请求。外部中断只有在端口的输入模式下才有效。
可通过配置寄存器Px_CR2相应的位来独立地使能或禁能某个端口的外部中断功能。另外,可通过ADC_TDRH和ADC_TDRL寄存器来禁用施密特触发器节省功耗。
2、KEY外部中断检测
2.1 KEY的外部中断配置
本小节介绍将GPIO配置为外部中断输入模式,并通过KEY(PC4)来触发一个外部中断信号,然后产生中断,然后控制LED1的状态。使用的例程:STM8L051F3_02_EXTI。实现步骤:
1)初始化LED1为推挽输出模式(初始电平高)
2)初始化KEY为上拉输入&中断模式,并配置为下降沿触发
2.2 例程介绍
EXTI的初始化在exti.c文件中实现:
void EXTI_Init(void)
{
// 配置KEY IO口为上拉输入&中断模式
GPIO_Init(KEY_GPIO_PORT, KEY_GPIO_PINS, GPIO_Mode_In_PU_IT);
//KEY引脚配置,下降沿触发;
EXTI_SetPinSensitivity(EXTI_Pin_4, EXTI_Trigger_Falling);
}
EXTI(KEY)的端口定义在exti.h文件下:
#define KEY_GPIO_PORT (GPIOC)
#define KEY_GPIO_PINS (GPIO_Pin_4)
主函数中对LED于EXTI进行初始化后开启总中断:
void main(void)
{
LED_Init(); //初始化LED1
EXTI_Init(); //初始化KEY
enableInterrupts(); //开总中断
while(1)
{
;
}
}
中断处理函数在stm8l15x_it.c文件下(该文件下还定义了delay_ms()函数):
INTERRUPT_HANDLER(EXTI4_IRQHandler,12)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
//延迟消抖
delay_ms(10);
//松手检测
while(GPIO_ReadInputDataBit(KEY_GPIO_PORT, KEY_GPIO_PINS)== 0);
//切换LED1的状态
GPIO_ToggleBits(LED1_GPIO_PORT, LED1_GPIO_PINS);
//清除中断标志位
EXTI_ClearITPendingBit(EXTI_IT_Pin4);
}
使用ST-LINK把程序下载到开发板中,按下KEY可以改变LED1的状态。
史海拾趣
|
序 言 第一章 系统简介 1 系统组成 1.1 库 1.2 原理图输入 1.3 设计转换和修改管理 1.4 物理设计与加工数据的生成 1.5 高速 PCB 规划设计环境 ...… 查看全部问答> |
|
暂时没分了,此贴会加分,请教:怎样才能在PB里安装NETCFv35.wce.armv4.cab的内容?而不是在设备上安装 NETCFv35.wce.armv4.cab的管方做法是在设备上安装,但是对于大规模生产这个方法不可取。 我们想在PB里直接安装NETCFv35.wce.armv4.cab, 这样编译NK.BIN时,里面就包含了.net cf v3.5; 请教怎么做呢? 非常抱歉现在没分了,但是这个贴子我会加 ...… 查看全部问答> |
|
大家功率放大模块做得怎样啦?有不用BUF634就做出来比较好效果的么 本帖最后由 paulhyde 于 2014-9-15 09:23 编辑 大家功率放大模块做得怎样啦?有不用BUF634就做出来比较好效果的么? 比如带宽多少?负载多少?电流多大?输入信号幅度多大? 我们用通用运放搭的,也做了扩流,可波形出来就是失真啊…… &nb ...… 查看全部问答> |
|
参与Silicon Labs 2014技术创新巡回研讨会,赢新颖大礼 由中国最大本土分销企业世强携手业界领先的高性能混合信号IC供应商Silicon Labs举办的创新技术巡回研讨会将于近期全面启动。本次研讨会主要针对在职研发工程师,Silicon Labs的资深技术专家将亲临现场,带来处于创新最前沿的设计技术 ...… 查看全部问答> |
|
手册上说g2553最高频率是26mhz,那怎么设置它的频率呢。 BCSCTL1 = CALBC1_16MHZ; DCOCTL = CALDCO_16MHZ; 我用上面的代码,为啥编译错误呢,求 ...… 查看全部问答> |




