打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IAR中STM8中断向量中断函数使用及STM8L的ucos时间调度
 按IAR的规矩中断向量要加2,如PA口的中断向量为3,那么在IAR程序中应写成#pragmavector=0x05。而PD7和PD其他端口不一样,PD7后面拖了个小尾巴TLI,TLI拥有芯片最高级别中断,享有独立专用的中断向量号0,因此,按IAR的规矩,向量号加2,程序改成#pragmavector=0x02,而不是PD口的其他中断号0x08.
 
另外在STM8L15X.H中 有以下宏定义 
#ifdef _IAR_
 #define STRINGVECTOR(x) #x
 #define VECTOR_ID(x) STRINGVECTOR( vector = (x))
 #define INTERRUPT_HANDLER( a, b)  \
 _Pragma( VECTOR_ID( (b)+2 ))       \
 __interrupt void (a)( void )
 #define INTERRUPT_HANDLER_TRAP(a) \
 _Pragma( VECTOR_ID( 1 ) ) \
 __interrupt void (a)(void) 
#endif
所以我们在IAR下编写程序时,无需再关心向量表,可以如同STVD下自动产生的中断函数一样去写
INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler, 28)
{
}
 
 
 
所以上官移植的stm8l的OS_CPU.A的文件中,TIMER4的中断接口为27,如下
   //TIME4interrupt  25+2
       //应该是_interrupt_xx作为汇编定义中断服务程序入口地址的关键字,对应连接到中断向量表中;这里的中断号xx是中断映射表的中断向量号+2
       PUBLIC _interrupt_27
       SECTION `.far_func.text`:CODE:NOROOT(0)
_interrupt_27:   
        SIM
        BRES      0x52E5, #0
       
        INT_SAVE_REGS
        
        SAVE_OLD_STK_PTR
               
        CALLF    OSIntEnter
        CALLF    OSTimeTick
        CALLF    OSIntExit
       
        INT_RESTORE_REGS         
        END
在这个中断中,调用了OSTimeTick,实现任务的切换
 
 
 
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
iar下的stm32启动代码分析
IAR学习(杂项)
IAR中断定义 #pragma vector
有关ZigBee2006协议栈中使用硬件中断函数的问题
STM32 IAR工程->Keil MDK转换详解
IAR STM32 函数和变量的绝对地址定位
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服