rtems下STM32驱动NVIC配置注意事项

    能够在rtems上运行stm32后就一直在纠结于驱动的问题,rtems的驱动层依赖于文件系统而文件系统对于一个单片机来说还是太消耗资源,于是就着手移植了自己的驱动层,但是由于一直没将NVIC这里吃透结果在这里纠结了很久,下面记录一下解决NVIC问题的关键点。

    1、cortex-m3内核是允许vector table运行在ram中但是需要在程序初始化时对vector table重新定位,这点在rtems的irq.c文件中

bsp_interrupt_facility_initialize函数中有具体代码

    2、设置BSP_INTERRUPT_VECTOR_MAX参数为83在stm32中系统有83个外部中断

    3、在驱动中需要使用具体的中断函数时需要先配置驱动的优先级和中断函数重定向

    _ARMV7M_Set_exception_priority(TIM6_IRQn+16,0x02);
    _ARMV7M_Set_exception_handler(TIM6_IRQn+16,TIM6_IRQHandler);

    这里之所以需要和+16是由于系统重定向中断函数时的偏移是按中断绝对索引定位的。


    之后的驱动代码与在keil下没有太大区别

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值