OpenEdv-开源电子网

标题: 基于STM32103VC移植Rtthread遇到难题,请求各位大神帮忙解决 [打印本页]

作者: huangyj1118A    时间: 2020-4-9 23:02
标题: 基于STM32103VC移植Rtthread遇到难题,请求各位大神帮忙解决
本人直接基于Rtthread4.01版本的官方移植好的STM32F103例程直接下载到开发板上跑,系统正常运行,LED运行正常;但由于项目需求,需要使得部分中断不能被操作系统打断,于是修改了官网移植好的context_rvds.S,需改内容如下(列出修改部分,其他没有改动),一共修改4处,都是与开关中断有关的;改完还有重新编译运行,系统直接进入硬件错误中断,但是我之前用STM32F407这样改一点问题没有,现在不知道问题出在哪里,请各位大神帮帮小弟:------------------------源文件------------------------------
;/*
; * rt_base_t rt_hw_interrupt_disable();
; */
rt_hw_interrupt_disable    PROC
    EXPORT  rt_hw_interrupt_disable
    MRS     r0, PRIMASK
    CPSID   I
    BX      LR
    ENDP

;/*
; * void rt_hw_interrupt_enable(rt_base_t level);
; */
rt_hw_interrupt_enable    PROC
    EXPORT  rt_hw_interrupt_enable
    MSR     PRIMASK, r0
    BX      LR
    ENDP


PendSV_Handler   PROC
    EXPORT PendSV_Handler

    ; disable interrupt to protect context switch
    MRS     r2, PRIMASK
    CPSID   I


pendsv_exit
    ; restore interrupt
    MSR     PRIMASK, r2

------------------------------修改文件---------------------------------------

;/*
; * rt_base_t rt_hw_interrupt_disable();
; */
rt_hw_interrupt_disable    PROC
    EXPORT  rt_hw_interrupt_disable
    MOV   r0, #0x50
    MSR   BASEPRI,r0
    BX    LR
    ENDP
;/*
; * void rt_hw_interrupt_enable(rt_base_t level);
; */
rt_hw_interrupt_enable    PROC
    EXPORT  rt_hw_interrupt_enable
        MOV    r0, #0
    MSR    BASEPRI,r0
        BX     LR
    ENDP



PendSV_Handler   PROC
    EXPORT PendSV_Handler

    ; disable interrupt to protect context switch
        MOV   r2, #0x50
    MSR   BASEPRI,r2


pendsv_exit
    ; restore interrupt
    MOV    r2, #0
    MSR    BASEPRI,r2


作者: yikexiaoshu    时间: 2021-12-14 17:10
直接把systick中断调低,把不能被打断的调高。但是这样系统实时性就变差很多。




欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/) Powered by Discuz! X3.4