Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Embedded 设置GPIOC->;ODR[13]=1没有调整用户LED,而是将其保留为默认值(即0)来打开。[STM32F103C8T6(蓝色药丸)]_Embedded_Gpio_Led_Cmsis_Stm32f1 - Fatal编程技术网

Embedded 设置GPIOC->;ODR[13]=1没有调整用户LED,而是将其保留为默认值(即0)来打开。[STM32F103C8T6(蓝色药丸)]

Embedded 设置GPIOC->;ODR[13]=1没有调整用户LED,而是将其保留为默认值(即0)来打开。[STM32F103C8T6(蓝色药丸)],embedded,gpio,led,cmsis,stm32f1,Embedded,Gpio,Led,Cmsis,Stm32f1,我最近开始学习使用CMSIS核心框架进行裸机嵌入式开发。我不明白为什么用户LED没有通过将ODR[13]设置为1来打开,而是通过将其保留为默认值(即0)来打开 这是我写的代码 #include "stm32f103xb.h" int main(void){ /** * Enable clock for APB2 bus * RCC_AP2ENR --> BIT 4 --> 1 **/ RCC->APB2ENR

我最近开始学习使用CMSIS核心框架进行裸机嵌入式开发。我不明白为什么用户LED没有通过将ODR[13]设置为1来打开,而是通过将其保留为默认值(即0)来打开

这是我写的代码

 #include "stm32f103xb.h"


int main(void){
    /** 
    * Enable clock for APB2 bus
    * RCC_AP2ENR --> BIT 4 --> 1
    **/
    RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;

    /**
     * Set GPIOC PIN 13 OUTPUT
     * GPIOC_CRH --> BIT(23,22,21,20) = (0,0,0,1)
     * MODE13[1:0] = 0 1
     * CNF13[1:0] = 0 0
     */
    GPIOC->CRH = GPIO_CRH_MODE13_0 | (GPIOC->CRH & ~ GPIO_CRH_CNF13);
    
    while(1){
        GPIOC->ODR |= GPIO_ODR_ODR13; // commenting this line turns on the LED
    }
}

免责声明:我有软件背景,我作为一名爱好者使用STM32F103C8T6蓝色药丸

尽管如此,根据,PC13上的用户LED似乎已连接。这将解释为什么将ODR[13]设置为0会打开LED:这确实允许电流流过负载-请参阅stm32-base.org页面上的示意图: