OpenEdv-开源电子网

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

SysTick优先级在哪定义的

[复制链接]

2

主题

6

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2015-9-11
在线时间
4 小时
发表于 2016-10-21 14:49:30 | 显示全部楼层 |阅读模式
找到了SysTick设置优先级的函数,默认设置优先级为0xF0,但是没找到调用的地方?
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks){
  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */

  SysTick->LOAD  = ticks - 1;                                  /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                  /* Function successful */
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-10-21 15:37:20 | 显示全部楼层
没调用说明代码中不使用滴答定时器中断!
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2015-9-11
在线时间
4 小时
 楼主| 发表于 2016-10-21 16:16:13 | 显示全部楼层
zuozhongkai 发表于 2016-10-21 15:37
没调用说明代码中不使用滴答定时器中断!

我看的是例6-1 UCOSIII 任务创建于删除,发现里面有Systick中断服务函数而且用于任务切换,怎么会没有使用滴答定时器中断呢?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-10-21 16:43:13 | 显示全部楼层
本帖最后由 zuozhongkai 于 2016-10-21 16:46 编辑
wuxp1993 发表于 2016-10-21 16:16
我看的是例6-1 UCOSIII 任务创建于删除,发现里面有Systick中断服务函数而且用于任务切换,怎么会没有使用 ...

那就说清楚什么例程,你直接一个函数提出来谁知道你有没有用滴答定时器。UCOS的话用汇编设置的滴答定时器优先级。

VGB5J7~WMQ@64{1JZBT%`RO.png
如上图,PendSV和滴答定时器的中断优先级一起设置的。

开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2015-9-11
在线时间
4 小时
 楼主| 发表于 2016-10-21 22:51:01 | 显示全部楼层
zuozhongkai 发表于 2016-10-21 16:43
那就说清楚什么例程,你直接一个函数提出来谁知道你有没有用滴答定时器。UCOS的话用汇编设置的滴答定时器 ...

你好。这个好像不是设置滴答定时器的,而是设置PendSV的优先级的。
因为NVIC_SYSPRI14   EQU     0xE000ED22   这句话中, 0xE000ED22是PendSV优先级寄存器。而STRB    R1, [R0]  这句话用于从R1中一个低8 位的字节数据传送到地址为0xE000ED22寄存器中。        
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-10-22 00:01:49 | 显示全部楼层
wuxp1993 发表于 2016-10-21 22:51
你好。这个好像不是设置滴答定时器的,而是设置PendSV的优先级的。
因为NVIC_SYSPRI14   EQU     0xE000 ...

把NVIC_PENDSV_PRI  改为0XFFFF,然后指令改为STRH,滴答定时器的优先级就是最低了,如下图
BKFV09}CW)}QO{_~$Y6IIWE.png
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2015-9-11
在线时间
4 小时
 楼主| 发表于 2016-10-22 12:41:00 | 显示全部楼层
zuozhongkai 发表于 2016-10-22 00:01
把NVIC_PENDSV_PRI  改为0XFFFF,然后指令改为STRH,滴答定时器的优先级就是最低了,如下图

嗯,明白了。但是例6-1 UCOSIII 任务创建于删除,没有把STRB改成STRH,那是怎么给滴答定时器设置优先级的呢?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-10-22 16:01:12 | 显示全部楼层
wuxp1993 发表于 2016-10-22 12:41
嗯,明白了。但是例6-1 UCOSIII 任务创建于删除,没有把STRB改成STRH,那是怎么给滴答定时器设置优先级的 ...

代码bug
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

12

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
963
金钱
963
注册时间
2016-3-16
在线时间
109 小时
发表于 2017-10-23 17:50:06 | 显示全部楼层
本帖最后由 若然落木 于 2017-10-23 17:51 编辑

赞一个。
回复 支持 反对

使用道具 举报

4

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
977
金钱
977
注册时间
2017-3-11
在线时间
78 小时
发表于 2017-10-24 08:01:32 | 显示全部楼层
启动文件里找啊
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-18 22:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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