本帖最后由 toofree 于 2019-2-19 01:16 编辑 ! ]% [% {3 Z; x& }! K 【STM8-SO8-DISCO】——4、外部中断 + s' G: U8 i/ z; W7 {! u3 H. O8 j' D" [" `8 {; c. V( V0 A8 M 本贴所用工程模板参考,【STM8-SO8-DISCO】——2、简单粗暴建工程模板https://www.stmcu.org.cn/module/f ... 9341&fromuid=307297 (出处: 意法半导体STM32/STM8技术社区) 5 ?+ O, L6 a4 a3 ?4 d' x. O1 v3 a 由原理图可知,按键B1为高电平有效。当B1按下时,触发上升沿中断。(当然也可以释放按键操作,来触发下降沿中断) 复制样例程序“STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Examples\EXTI\EXTI_InterruptPriority”下的全部文件。 ) {: G k/ N. v( ?* {$ e( a( Y5 M* n 工程模板文件夹改名为“STM8S_StdPeriph_EXTI”。并将上一步复制的6个文件粘贴到工程模板文件夹下,并替换同名文件。- w4 Z. T9 @9 r) ]% K6 h; _ 修改“main.h”文件中的宏定义,添加按键和LED宏定义。 , H$ F8 t* d8 r, m0 p+ z 修改“main.c”文件。初始化LED为输出,按键为浮空中断方式“GPIO_MODE_IN_FL_IT”;初始化外部中断“EXTI_PORT_GPIOC”;开启中断。: F. v$ H0 [( U( I0 | 修改“stm8s_it.c”文件。找到“EXTI_PORTC_IRQHandler”对应的中断服务函数,添加中断判断,满足条件时执行LED输出状态翻转。/ R& `7 J; O; d2 `- j/ T* x 编译,下载程序,并全速运行。 实验现象为,每按一次用户按键B1,LD1的状态翻转一次。5 E' W- h! Q$ N' p; d( @; Y _4 Y* j- u, F6 ^4 O+ e+ A 附上程序工程: |
好好好 |
谢谢分享呀 |