你好。我正在使用
STM32L476RG 核。我正在尝试调试裸机代码。遗憾的是,当我的调试到达配置 MODER 寄存器的行时,它停止工作。
控制台显示如下:
Target 没有响应,正在重试...
它一直说,直到调试器失去连接。
debuggur失去连接的那一行:
GPIOA->MODER = 0x400;
但是,当我用 OR 调试器编写同一行时,它很好:
GPIOA->MODER |= 0x400;
一旦我删除 OR(|) 它就会崩溃。问题在于 OR 它不会更改寄存器值并且我的代码将无法运行。任何解决方案?
- #include "stm32l4xx.h" // Device header
- void delayMs(int delay);
- int main(void)
- {
- RCC->AHB2ENR |= 1; // enable GPIOA clock, 00000000000000000000000000000001
- GPIOA->MODER = 0x400; // set PA5 as output, 0b 0000 0000 0000 0000 0000 0100 0000 0000, default value //0xABFFF7FF?
- while(1){
- GPIOA->ODR = 0x20; // set PA5 output data register 1, 0b .... 0010 0000
- delayMs(100);
- GPIOA->ODR &=~ 0x20;
- delayMs(100);
- }
- }
- void delayMs(int delay)
- {
- int i;
- for(; delay>0; delay--){
- for(i = 0; i<3195; i++);
- }
- }