繁体   English   中英

STM32F103蓝色药丸-与闪烁的led裸机有关的问题

[英]STM32F103 blue pill - problems related to blinking led bare metal

我在尝试运行此代码以使蓝色药丸板上的内置 LED(位于 PC13)闪烁时遇到问题(STM32F103C8、ARM Cortex M3):

#include "stm32f10x.h"                  // Device header

#define max 1000000

int main(void){
    RCC->APB2ENR |= 1<<4;
    GPIOC->CRH &= 0xFF0FFFF;//clear the necessary bit 
    GPIOC->CRH |= 0x00300000;//set the necessary bit
    GPIOC->ODR &= ~(1<<13);//turn PC_13 ON
        while(1){
                    GPIOC->ODR |= 1<<13;//off
                    for(unsigned int i = 0;i < max;++i);
                    GPIOA->ODR &= ~(1<<13);//on
                    for(unsigned int i = 0;i < max;++i);
    }
}

. 在这里我收到一些错误,我不知道为什么: 在此处输入图像描述

有人可以帮助我吗? 此外,当我在 while 循环中声明未签名的 integer “i”时一切正常,但即使没有任何反应,LED 仍然不闪烁。 这是修改后的代码:

#include "stm32f10x.h"                  // Device header

#define max 1000000

int main(void){
    RCC->APB2ENR |= 1<<4;
    GPIOC->CRH &= 0xFF0FFFF;//clear the necessary bit 
    GPIOC->CRH |= 0x00300000;//set the necessary bit
    GPIOC->ODR &= ~(1<<13);//turn PC_13 ON
        while(1){
                    unsigned int i;
                    GPIOC->ODR |= 1<<13;//off
                    for(i = 0;i < max;++i);
                    GPIOA->ODR &= ~(1<<13);//on
                    for(i = 0;i < max;++i);
    }
}

. 此外,我尝试了另一个技巧,在循环外声明 integer "i",如下所示:

#include "stm32f10x.h"                  // Device header

#define max 1000000

int main(void){
    RCC->APB2ENR |= 1<<4;
    GPIOC->CRH &= 0xFF0FFFF;//clear the necessary bit 
    GPIOC->CRH |= 0x00300000;//set the necessary bit
    GPIOC->ODR &= ~(1<<13);//turn PC_13 ON
        unsigned int i;
        while(1){
                    GPIOC->ODR |= 1<<13;//off
                    for(i = 0;i < max;++i);
                    GPIOA->ODR &= ~(1<<13);//on
                    for(i = 0;i < max;++i);
    }
}

. 然后,我收到了下一条错误消息: 在此处输入图像描述 . 现在,问题是为什么? 请帮我。

在 uVision 项目配置对话框 C/C++ 选项卡中,select“使用 C99”。

ISO C90 不允许在for语句或语句块中的非声明性代码中声明变量。

或者将声明移动到需要它的语句块的顶部。 不过最好使用 C99 - 我认为它已经存在了足够长的时间,可以被视为最低公分母标准!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM