历史上的今天
今天是:2024年09月03日(星期二)
2021年09月03日 | IAR+STM8_EXTI外部IO中断
2021-09-03 来源:eefocus
MCU:STM8S207SB
要操作的IO口:PD7 采用下降沿触发中断
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include #define LED1_FLASH PD_ODR_ODR3 = !PD_ODR_ODR3 // 开发板上的LED1接在PD3上 void GPIO_init(void) { PD_DDR = 0x08; // 配置PD端口的方向寄存器PD3输出 PD_CR1 = 0x08; // 设置PD3为推挽输出 PD_CR2 = 0x80; // 使能PD7外部中断 } void EXTI_init(void) { EXTI_CR1 = 0x80; // PD口下降沿触发中断 } #pragma vector=0x02 // 这里很关键!看下面说明。 __interrupt void EXTI_PD7_TLI(void) { LED1_FLASH; } void init_devices(void) { asm("sim"); // 关全局中断 GPIO_init(); EXTI_init(); asm("rim"); // 开全局中断 } void main( void ) { init_devices(); // 主循环里没有程序需要执行 while(1); } |
这里着重要说明的一点是PD7的外部中断程序。看了一下芯片手册,PD口外部中断EXTI3的中断向量号是6,想当然,又是想当然,按IAR的规矩中断向量要加2,就这样写#pragma vector=0x08,结果就是按下按键,程序没响应了,一直在中断里不出来。接下来只能另想办法,仔细翻了资料后发现,PD7和PD其他端口不一样,PD7后面拖了个小尾巴TLI,再看手册上的TLI描述,乖乖,TLI拥有芯片最高级别中断,享有独立专用的中断向量号0,这下就好办了,按IAR的规矩,芯片手册中断向量号 + 2 = IAR中断向量号,程序改成#pragma vector=0x02,重新来一遍编译、下载、运行,按键终于听话了。
上一篇:STM8使用TIM1测量PWM波
下一篇:stm8 pwm实现核心代码
史海拾趣
|
一、引言 过去工业控制计算机系统的软件功能都靠软件人员编程实现。工作量大,软件通用性差,且易产生错误。随着工业控制要求的不断提高,专门用于工业控制的组态软件应运而生,它是一套功能齐全的组态生成工具软件,通用性强,而 ...… 查看全部问答> |
|
_irqHandler PROC 1. STMFD sp!,{r0-r4,r12,lr} 2. mov r4,#0x80000000 //中断控制寄存器首地址(假设的) 3. ldr r0,[r4,#0] ...… 查看全部问答> |
|
计时制办公场地租赁,个人创业,兼职,自由职业人的最佳选择。 请见网站: http://www.ingress.cn 打工者们,你是否在为每天要起早贪黑奔赴公司同时上下班交通拥堵而烦心? 创业者们,你是否在为寻找物美价廉随时可退租的办公场地而操心? 企业 ...… 查看全部问答> |
|
请问: wince中的文件夹有没有后缀名? 我想把一个名为NandFlash的文件夹,放到桌面快捷方式, 我在WINCE500\\PLATFORM\\SMDK2440\\FILES创建了一个NandFlash.LNK文件,里面写上22#\\windows\\NandFlash 我又在Project.bib 里面加上 NandFlash ...… 查看全部问答> |
|
今天听单片机老师讲课讲中断,说分了好几种,被他弄得一头雾水,还是没明白他说的中断都有什么,怎么配置,查了查2553手册,愣是没找到讲解终端的地方,球大神指点123!不胜感激。… 查看全部问答> |




