本帖最后由 toofree 于 2019-2-19 01:16 编辑 【STM8-SO8-DISCO】——4、外部中断 * E3 l' X2 e; V% z6 k& j- S. Q; a. m7 T! w) r Y1 v 本贴所用工程模板参考,【STM8-SO8-DISCO】——2、简单粗暴建工程模板https://www.stmcu.org.cn/module/f ... 9341&fromuid=307297 (出处: 意法半导体STM32/STM8技术社区) ( h4 _9 i9 ^4 }- [9 @ 2 y8 c" p1 Y8 B5 f2 C+ ]6 A1 {! p 由原理图可知,按键B1为高电平有效。当B1按下时,触发上升沿中断。(当然也可以释放按键操作,来触发下降沿中断) ; \* b' R- P$ \0 z: S7 p 复制样例程序“STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Examples\EXTI\EXTI_InterruptPriority”下的全部文件。+ X2 o) @; @" I 工程模板文件夹改名为“STM8S_StdPeriph_EXTI”。并将上一步复制的6个文件粘贴到工程模板文件夹下,并替换同名文件。 * Q- X; G) I2 ^' E 修改“main.h”文件中的宏定义,添加按键和LED宏定义。 & v+ L# @1 D: K- S* B 修改“main.c”文件。初始化LED为输出,按键为浮空中断方式“GPIO_MODE_IN_FL_IT”;初始化外部中断“EXTI_PORT_GPIOC”;开启中断。 修改“stm8s_it.c”文件。找到“EXTI_PORTC_IRQHandler”对应的中断服务函数,添加中断判断,满足条件时执行LED输出状态翻转。 编译,下载程序,并全速运行。) r) H8 y6 `2 s5 ]( D% x" c3 b 实验现象为,每按一次用户按键B1,LD1的状态翻转一次。6 l" Q( F5 u6 W4 ~ + c: J4 O+ o; R) g* C& Z 附上程序工程: |
好好好 |
谢谢分享呀 |