OpenEdv-开源电子网

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

这是不是开发板例程的一个错误

[复制链接]

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2015-8-28
在线时间
9 小时
发表于 2015-11-18 16:51:52 | 显示全部楼层 |阅读模式
5金钱
例程里 PENDSV 寄存器地址为

NVIC_SYSPRI2     EQU     0xE000ED20  ; 系统优先级寄存器(2)

而M3权威指南里PENDSV优先级寄存器地址为0xE000ED22

 0xE000ED20是调试监视器的优先级,为什么用了错误的地址系统还能跑??


最佳答案

查看完整内容[请看2#楼]

这个地址没错呢. NVIC_SYSPRI2     EQU     0xE000ED20  ; 系统优先级寄存器(2) NVIC_PENDSV_PRI EQU     0xFFFF0000  ; PendSV中断和系统节拍中断 你看后面的地址,只设置了高16位.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-11-18 16:51:53 | 显示全部楼层
这个地址没错呢.
NVIC_SYSPRI2     EQU     0xE000ED20  ; 系统优先级寄存器(2)
NVIC_PENDSV_PRI EQU     0xFFFF0000  ; PendSV中断和系统节拍中断

你看后面的地址,只设置了高16位.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-11-18 17:59:00 | 显示全部楼层
你看的是哪个板子的哪个例程?我刚看了一下,所有牵扯到UCOS的例程的PendSV优先级地址都是0XE000ED22的啊。
开往春天的手扶拖拉机
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2015-8-28
在线时间
9 小时
 楼主| 发表于 2015-11-19 09:15:54 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
warship stm32 board v2.3    可能是比较早的板子了
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2015-8-28
在线时间
9 小时
 楼主| 发表于 2015-11-20 11:08:38 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
感谢原子哥的解答,再请教一个问题,CM3是有双堆栈的,貌似官方启动文件只使用了MSP,我们平时也都只是用MSP,启动文件里Stack_Size      EQU     0x00000400其实也就是MSP的容量大小,如果要使用PSP要怎么设置呢?有没有使用双堆栈的例程啊?
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2067
金钱
2067
注册时间
2012-5-26
在线时间
292 小时
发表于 2015-11-20 12:38:59 | 显示全部楼层
PSP好像是用到UCOS系统的时候用到
活着才是王道!健康是一切的前提!
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2015-8-28
在线时间
9 小时
 楼主| 发表于 2015-11-20 14:51:28 | 显示全部楼层
回复【6楼】lison0103:
---------------------------------
看了半天终于明白一点,的确像你说的那样。开始感觉很奇怪 启动代码只初始化了主堆栈并没有看到进程堆栈的影子,也没有对CONTROL寄存器的修改,
就以为没有用到PSP。其实是有用到的,UCOS把各个任务的堆栈(也就是全局数组,让PSP指向了全局变量的空间,和MSP不一样)作为进程堆栈,这样
有多少个任务就有多少个进程堆栈,各自使用各自的,一方面通过MSR和MRS在进程堆栈之间切换,一方面编译器自动在主堆栈和进程堆栈之间切换。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-17 00:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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