打印
[STM8]

实验分享-【 STM8-SO8-DISCO 评测贴 3 -- 外部中断】

[复制链接]
415|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主



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



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:每天都要开心呀

210

主题

505

帖子

4

粉丝