STM8-SO8-DISCO 开发板对于STM8S001来说,按键对应的PC3,LED对应PA3,按照原理图LED 接到控制引脚PA3/PB5按理说是这个引脚都能使用,不过换成PB5测试的时候没能点亮LED ,后来看下手册手册中 PB5 引脚用于 IIC 接口内部是没有上拉电阻,只支持开漏输出不支持推挽输出不能直接用来驱动 LED 如果需要使用的话需外部接上拉电阻才能驱动 LED 。
配置外部中段引脚:- void button_init(void)
- {
- /* Initialize I/Os in Output Mode */
- GPIO_Init(BUTTON_GPIO_PORT, (GPIO_Pin_TypeDef)BUTTON_GPIO_PINS, GPIO_MODE_IN_FL_IT);/* 配置为浮空中断模式 */
- /* Initialize the Interrupt sensitivity */
- EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC,EXTI_SENSITIVITY_RISE_FALL);/* 中断触发方式为双边沿 */
- //EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_FALL_ONLY);
- enableInterrupts();/* 打开中断 */
- }
[color=rgb(51, 102, 153) !important]复制代码
配置Button 引脚为浮空输入中断模式,中断触发方式为双边沿,上升沿点亮 LED ,下降沿熄灭 LED。
中断处理函数:
- #include "bsp_led.h"
- /**
- * @brief External Interrupt PORTC Interrupt routine
- * @param None
- * @retval None
- */
- INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler, 5)
- {
- /*
- volatile unsigned int i =1000;
- while(i--);
- */
- /* In order to detect unexpected events during development,
- it is recommended to set a breakpoint on the following instruction.
- */
- /* 上升沿触发中断,点亮LED 下降沿触发中断,熄灭LED */
- (GPIO_ReadInputPin(GPIOC,GPIO_PIN_3) != RESET) ?(led_on()):(led_off());
- }
[color=rgb(51, 102, 153) !important]复制代码
外部中中断相关的寄存器,在进入中断的时候并没有能够区分进入中断的原因(上升沿/下降沿),在按键中断处理函数中读取相应的按键值,如果为1则认为是上升沿触发并点亮 LED ,若为低电平则认为是下降沿触发熄灭 LED。
============================工程如下==================
stm8s001-st-disco.zip (207.76 KB, 下载次数: 5)
|
2.PNG (35.07 KB, 下载次数: 0)
【 STM8-SO8-DISCO 评测贴 3 -- 外部中断】
http://www.stmcu.org.cn/module/forum/thread-619227-1-1.html
|