关于RCC配置

[复制链接]
4002|5
 楼主| baidudz 发表于 2011-10-20 19:24 | 显示全部楼层 |阅读模式
rc, IO, GPIO, gp, pi
起步学习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--);
}
程序很简单,但是也是起步的第一步,仍然继续学习中
taitaijing 发表于 2011-11-23 21:18 | 显示全部楼层
我也在学习中 。
wangshi 发表于 2011-11-25 21:07 | 显示全部楼层
祝贺你,慢慢来,一定可以成功。
mynokia 发表于 2011-11-25 21:11 | 显示全部楼层
谁都有第一次,正常。
hhhhuuii 发表于 2011-12-1 11:57 | 显示全部楼层
支持中学习中!
2546522197 发表于 2014-10-10 16:28 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

2284

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部