- 简述:
- 打开与关闭全局中断:
- asm("rim"); //开全局中断
- asm("sim");//关全局中断
- 用STVD新建工程后,左侧项目目录树中自动增加2个文件main.c,stm8_interrupt_vector.c文件,后者提供了STM8所有的中断入口函数地址表
- 打开与关闭全局中断:
- stm8_interrupt_vector文件的功能:
- 中断函数入口
- 默认中断函数入口是一样的,需要我们自己找到相应中断修改入口名
- 中断函数的声明
- 默认@far @interrupt void NonHandledInterrupt (void)
- 中断向量表:
- P75-8S中文数据手册,或文末
- 中断函数入口
- 例程:
- 外部中断A的入口函数设置
- struct interrupt_vector const _vectab[] =
- {{0x82, EXTI0_A}, /* irq3 */};
- struct interrupt_vector const _vectab[] =
- 声明中断服务函数
- extern @far @interrupt void EXTI0_A(void);
- 用户中断服务函数
- @far @interrupt void EXTI0_A(void ){ return; }
- 外部中断A的入口函数设置
- 中断映射表
- 例程
-
//@far @interrupt void Uart1_RxIrqHandleer(void); @far @interrupt void Uart1_RxIrqHandleer(void); struct interrupt_vector const _vectab[] = { {0x82, (interrupt_handler_t)_stext}, /* reset */ {0x82, NonHandledInterrupt}, /* trap */ {0x82, NonHandledInterrupt}, /* irq0 */ {0x82, NonHandledInterrupt}, /* irq1 */ {0x82, NonHandledInterrupt}, /* irq2 */ {0x82, NonHandledInterrupt}, /* irq3 */ {0x82, NonHandledInterrupt}, /* irq4 */ {0x82, NonHandledInterrupt}, /* irq5 */ {0x82, NonHandledInterrupt}, /* irq6 */ {0x82, NonHandledInterrupt}, /* irq7 */ {0x82, NonHandledInterrupt}, /* irq8 */ {0x82, NonHandledInterrupt}, /* irq9 */ {0x82, NonHandledInterrupt}, /* irq10 */ {0x82, NonHandledInterrupt}, /* irq11 */ {0x82, NonHandledInterrupt}, /* irq12 */ {0x82, NonHandledInterrupt}, /* irq13 */ {0x82, NonHandledInterrupt}, /* irq14 */ {0x82, NonHandledInterrupt}, /* irq15 */ {0x82, NonHandledInterrupt}, /* irq16 */ {0x82, NonHandledInterrupt}, /* irq17 */ {0x82, Uart1_RxIrqHandleer}, /* irq18 */ {0x82, NonHandledInterrupt}, /* irq19 */ {0x82, NonHandledInterrupt}, /* irq20 */ {0x82, NonHandledInterrupt}, /* irq21 */ {0x82, NonHandledInterrupt}, /* irq22 */ {0x82, NonHandledInterrupt}, /* irq23 */ {0x82, NonHandledInterrupt}, /* irq24 */ {0x82, NonHandledInterrupt}, /* irq25 */ {0x82, NonHandledInterrupt}, /* irq26 */ {0x82, NonHandledInterrupt}, /* irq27 */ {0x82, NonHandledInterrupt}, /* irq28 */ {0x82, NonHandledInterrupt}, /* irq29 */ }; /********************************************************* * 函数名: @far @interrupt void Uart1_RxIrqHandleer(void) * 描述 :串口中断函数 * 输入 :无 * 输出 :无 * 返回 :无 * 调用 :内部调用 **********************************************************/ @far @interrupt void Uart1_RxIrqHandleer(void) { if(UART1_SR & UART_RXNE) { TxRx_Data = UART1_DR; UART_RxFinishFlag = 1; } }
-
- 总结:
- 无
- 工具篇:
- 有两种开发工具:
- ST Visual Develop Version 4.3.2
- IAR
- 有两种开发工具:
- 参考资料:
- 风驰开源STM8寄存器版本例程
- STM8中文参考手册
- STM8数据手册
- STM8S库函数中文参考.exe
- 程序
- 库函数
- 寄存器(本笔记依据寄存器编写)
【6】STM8——————8S 关于打开与进入中断函数的说明
最新推荐文章于 2023-12-13 19:38:05 发布