打印

关于RCC配置

[复制链接]
3286|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 | 只看该作者
谁都有第一次,正常。

使用特权

评论回复
5
hhhhuuii| | 2011-12-1 11:57 | 只看该作者
支持中学习中!

使用特权

评论回复
6
2546522197| | 2014-10-10 16:28 | 只看该作者
:hug:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

2284

帖子

0

粉丝