STM32f7寄存器无法正确设置

2019-07-14 15:47发布

运行结果是失败的。
经过调试发现,上述三个寄存器都没有正确设置成功。手动在调试时设置寄存器后,LED可以点亮。
另外,调试的时候总会发现 PC指向 0x1ff0xxxx,而没有在我设置的断点处中断。调试后RESET,PC固定指向0x1ff00210。


请问我的操作出现了什么问题?希望大神不吝赐教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
HNHS
1楼-- · 2019-07-14 22:50
wen58452035
2楼-- · 2019-07-15 04:34
很常见的问题。
RCC_AHB1ENR |= 1<<2; 将GPIOC的时钟打开,然后紧接着  GPIOC_MODER |= 1<<14; 就操作了GPIOC的寄存器,两次对AHB总线的访问靠得太近了。也就是说RCC修改要延迟一下,还没来得及把GPIOC激活,就对GPIOC的MODER发出了读写请求,导致没读或写成功。
在两条语句中间插一条 __NOP();  或者  __DMB();  等待一下。
60user58
3楼-- · 2019-07-15 05:57
 精彩回答 2  元偷偷看……
HNHS
4楼-- · 2019-07-15 09:24
wen58452035 发表于 2018-11-23 16:52
很常见的问题。
RCC_AHB1ENR |= 1&amp;lt;&amp;lt;2; 将GPIOC的时钟打开,然后紧接着  GPIOC_MODER |= 1&amp;lt;&amp;lt;14; 就操作了GPIOC的寄存器,两次对AHB总线的访问靠得太近了。也就是说RCC修改要延迟一下,还没来得及把GPIOC激活,就对GPIOC的MODER发出了读写请求,导致没读或写成功。
在两条语句中间插一条 __NOP();  或者  __DMB();   ...

HNHS
5楼-- · 2019-07-15 09:34
60user58 发表于 2018-11-23 17:04
0x1ff0xxxx是System memory区域。

多谢提醒。这个我注意到了,但我不明白为什么PC会指向system memory内。
板子的BOOT0、BOOT1都接GND了,启动方式应该也没有问题。
HNHS
6楼-- · 2019-07-15 10:11
HNHS 发表于 2018-11-23 16:20
问题解决。
不用调试器就行了。
参考:http://www.keil.com/support/docs/3778.htm

现在发现这是歪打正着了,不过就这样吧...

一周热门 更多>