起步学习STM32F103的片子,其实有很多例程供参考的,但是想自己熟悉一下控制的流程,这样**更深刻,所以不利用库函数自己写了一小段例程,已经成功运行,控制了led闪断,在此有哪些语句不妥的地方希望高手给出一些指点#include "stm32f10x.h"
void rcc_init(void); //定义RCC初始化
void led_init(void); //GPIO端口初始化
void Delay(__IO uint32_t nCount); //延时函数
int main(void) //主函数
{
/* System Clocks Configuration **********************************************/
rcc_init();
led_init();
while (1)
{
GPIOB->BSRR = 0x0020;//LED1_ON; //V6 亮 V7,V8 //GPIO端口开
Delay(0xAFFFF);
GPIOB->BRR = 0x0020;//LED1_OFF;
Delay(0xAFFFF); //GPIO端口关
}
}
void led_init(void)
{
RCC->APB2ENR |= 0X00000008; //使能GPIO时钟
GPIOB->CRL |= 0X00300000; //将GPIOB端口5配置为推挽输出
}
void rcc_init(void)
{
RCC->CR = 0x00010000; //使能外部时钟
while(!(RCC->CR&0x00020000)); //等待外部时钟稳定
FLASH->ACR = 0x10; //启动预存缓冲使能
FLASH->ACR |= 0x02; //时钟为了配置为72M,flash等待设置为2
RCC->CFGR = 0x001d4400; //外部时钟为8M,PLL为9倍频,
RCC->CR |= 0x01000000; //使能PLL
while(!(RCC->CR&0x02000000)); //等待PLL稳定
RCC->CFGR |= 0x00000002; //时钟为PLL提供
while(!(RCC->CFGR&0x00000008)); //等待系统时钟稳定
}
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
程序很简单,但是也是起步的第一步,仍然继续学习中 |