OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3853|回复: 7

ucos3中systick中断的优先级设置

[复制链接]

16

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2015-11-19
在线时间
33 小时
发表于 2017-4-8 23:19:07 | 显示全部楼层 |阅读模式
ucos3中systick中断的优先级如果要修改应该在哪里修改呢??是设置成最高优先级呢还是怎么样??但设置成最高优先级的话,如果是用串口中断去接收数据理论上数据大的话会出现数据丢失。请大神赐教!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-4-8 23:33:59 | 显示全部楼层
汇编文件os_cpu_a.asm中设置
K[57%UZIGHOK@`P3ONNP52Y.png
回复 支持 反对

使用道具 举报

16

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2015-11-19
在线时间
33 小时
 楼主| 发表于 2017-4-9 10:24:39 | 显示全部楼层
zuozhongkai 发表于 2017-4-8 23:33
汇编文件os_cpu_a.asm中设置

好的,谢谢
回复 支持 反对

使用道具 举报

8

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2016-12-30
在线时间
37 小时
发表于 2017-5-31 16:16:09 | 显示全部楼层
。。没看懂
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2017-8-24
在线时间
0 小时
发表于 2017-8-24 16:44:21 | 显示全部楼层
在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的(个人认为)。
感觉是使用的是默认的中断优先级,在程序中没有发现是在哪还有设定,如有麻烦请解答一下。





回复 支持 反对

使用道具 举报

17

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2013-6-27
在线时间
78 小时
发表于 2017-10-19 13:39:45 | 显示全部楼层
求解答
回复 支持 反对

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
826
金钱
826
注册时间
2017-6-18
在线时间
163 小时
发表于 2017-10-19 15:17:56 来自手机 | 显示全部楼层
os下,定时器的优先器是不可以设置的。定时器由定时任务初始化与维护。由定时任务内部定义绝定,没事不要去改动
回复 支持 反对

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
826
金钱
826
注册时间
2017-6-18
在线时间
163 小时
发表于 2017-10-19 15:22:00 来自手机 | 显示全部楼层
要改,就说明代码有问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-27 01:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表