嵌入式学习小组
直播中

戚來麒

7年用户 212经验值
私信 关注

ucos3中systick中断的优先级在哪里修改?

ucos3中systick中断的优先级如果要修改应该在哪里修改呢??是设置成最高优先级呢还是怎么样??但设置成最高优先级的话,如果是用串口中断去接收数据理论上数据大的话会出现数据丢失。请大神赐教!

回帖(7)

李勇进

2020-3-20 08:51:05
汇编文件os_cpu_a.asm中设置
举报

陈波

2020-3-20 09:03:08
好的,谢谢
举报

张一珠

2020-3-20 09:12:34
。。没看懂
举报

席毖庸

2020-3-20 09:21:28
在UCOSIII下:
我也有同样问题,但是我认为这里有错,应该不是这里设置systick中断的优先级
NVIC_INT_CTRL   EQU     0xE000ED04                              ; Interrupt control state register.
NVIC_SYSPRI14   EQU     0xE000ED22                              ; System priority register (priority 14).
NVIC_PENDSV_PRI EQU         0xFFFF                              ; PendSV和滴答定时器优先级设置为最低
NVIC_PENDSVSET  EQU     0x10000000                              ; Value to trigger PendSV exception.
OSStartHighRdy
    LDR     R0, =NVIC_SYSPRI14                                  ; Set the PendSV exception priority
    LDR     R1, =NVIC_PENDSV_PRI
    STRB    R1, [R0]
    MOVS    R0, #0                                              ; Set the PSP to 0 for initial context switch call
    MSR     PSP, R0
    LDR     R0, =OS_CPU_ExceptStkBase                           ; Initialize the MSP to the OS_CPU_ExceptStkBase
    LDR     R1, [R0]
    MSR     MSP, R1   
    LDR     R0, =NVIC_INT_CTRL                                  ; Trigger the PendSV exception (causes context switch)
    LDR     R1, =NVIC_PENDSVSET
    STR     R1, [R0]
    CPSIE   I                                                   ; Enable interrupts at processor level
OSStartHang
    B       OSStartHang                                         ; Should never get here
/////////////////////////////////////////////////////////////////////////////////////
0xE000ED22 是PendSV的异常优先级寄存器
0xE000ED23 是systick的异常优先级寄存器
表8.3B 系统异常优先级寄存器阵列 0xE000_ED18 - 0xE000_ED23
地址 名称 类型 复位值 描述0xE000_ED18 PRI_4 存储器管理 fault 的优先级0xE000_ED19 PRI_5 总线 fault 的优先级0xE000_ED1A PRI_6 用法 fault 的优先级0xE000_ED1B ‐ ‐ ‐ ‐0xE000_ED1C ‐ ‐ ‐ ‐0xE000_ED1D ‐ ‐ ‐ ‐0xE000_ED1E ‐ ‐ ‐ ‐0xE000_ED1F PRI_11 SVC 优先级0xE000_ED20 PRI_12 调试监视器的优先级0xE000_ED21 ‐ ‐ ‐ ‐0xE000_ED22 PRI_14 PendSV 的优先级0xE000_ED23 PRI_15 SysTick 的优先级
所以这里只是设置了PendSv的并没有设置Systick的(个人认为)。
感觉是使用的是默认的中断优先级,在程序中没有发现是在哪还有设定,如有麻烦请解答一下。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分