|
本人初学STM32F7,想通过GPIO口点亮LED灯做个试验。 代码如下:
经过调试发现,上述三个寄存器都没有正确设置成功。手动在调试时设置寄存器后,LED可以点亮。 另外,调试的时候总会发现 PC指向 0x1ff0xxxx,而没有在我设置的断点处中断。调试后RESET,PC固定指向0x1ff00210。 网上找到一个类似的问题 http://www.keil.com/forum/61975/。 请问我的操作出现了什么问题?希望大神不吝赐教! |
微信公众号
手机版
不用调试器就行了。
参考:http://www.keil.com/support/docs/3778.htm
感谢上面两位的帮助,就此结贴。
评分
查看全部评分
RCC_AHB1ENR |= 1<<2; 将GPIOC的时钟打开,然后紧接着 GPIOC_MODER |= 1<<14; 就操作了GPIOC的寄存器,两次对AHB总线的访问靠得太近了。也就是说RCC修改要延迟一下,还没来得及把GPIOC激活,就对GPIOC的MODER发出了读写请求,导致没读或写成功。
在两条语句中间插一条 __NOP(); 或者 __DMB(); 等待一下。
评分
查看全部评分
0x1ff0xxxx是System memory区域。
评分
查看全部评分
感谢!不过按照这个原理问题还在。由于没有找到<intrinis.h>文件,所以用这个来代替:
多谢提醒。这个我注意到了,但我不明白为什么PC会指向system memory内。
板子的BOOT0、BOOT1都接GND了,启动方式应该也没有问题。
现在发现这是歪打正着了,不过就这样吧...
不用调试器你上面的程序能正常实现功能是吧。
谢谢分享 !