我试图启用PC13在蓝丸(stm32f103c8t6)是连接到一个发光二极管,不确定它是活动低或活动高,所以我尝试了这两个仍然不能工作。
RCC->APB2ENR |= 0x10;
用于启用C端口中的时钟。

GPIOC->CRH = (GPIOC->CRH & 0xFF0FFFFF) | 0x00100000;
用于配置端口C,使其处于输出模式和推挽模式.

GPIOC->ODR &= !(1<<13);用于将C13引脚驱动到较低的位置。
整个守则:
#include "stm32f10x.h"
int main(){
RCC->APB2ENR |= 0x10;
GPIOC->CRH = (GPIOC->CRH & 0xFF0FFFFF) | 0x00100000;
while(1) {
GPIOC->ODR = ~(1<<13);//if it is Active Low
for (int i = 0; i < 1000000; ++i) __asm__("nop");
GPIOC->ODR |= 1<<13; //if it is Active High
for (int i = 0; i < 500000; ++i) __asm__("nop");
}
}编辑:
经过一些调查后,我发现如果运行调试会话,代码工作得很好,这会是软件问题吗?还是调试代码设置了我没有的东西?正如我所说的,我正在使用uVision编译和闪存。
发布于 2020-10-28 08:26:00
如果您在"int“之前使用”易失性“,它将起作用。
https://stackoverflow.com/questions/61179208
复制相似问题