OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10442|回复: 6

关于stm32初始化始终配置步骤

[复制链接]

5

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-2-13
在线时间
0 小时
发表于 2012-4-15 22:37:27 | 显示全部楼层 |阅读模式

结合mini23Stm32_Clock_Init()时钟配置过程,我总结时钟配置就是大致如下步骤:

关所有外设时钟,
(1)使能HSI,配置分频寄存器,并且在crgr中将系统时钟设为HSI,
(2)关所有中断,
(3)配置向量表,
(4)使能HSE,CR中等待设置完毕,
(5)打开PLL,CR中等待PLL开启,
(6)在cfgr中sws位等待PLL成为系统时钟


结合上述方式,我改写的代码如下:
void Stm32_Clock_Init111(u8 PLL)
{

 unsigned char temp=0; 
 RCC->APB1RSTR = 0x00000000;//复位结束   
 RCC->APB2RSTR = 0x00000000; 
   
 RCC->AHBENR = 0x00000014;  //睡眠模式闪存和SRAM时钟使能.其他关闭.   
 RCC->APB2ENR = 0x00000000; //外设时钟关闭.      
 RCC->APB1ENR = 0x00000000;  
 
 RCC->CR &= 0xFEF2FFFF;  //该步的主要作用是开启内部HSION,且关闭HSE,CSS,PLLON                 
 
 RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1; HSE设置为不分频,CFGR的主要作用是配置分频,分频之前当然要把cr中HSE时钟全关闭只开启HSI时钟。当然还有一个重要的作用是,设置当前是谁作为系统时钟,就是SW位。


 LL-=2;//抵消2个单位
 RCC->CFGR|=PLL<<18;   //设置PLL值 2~16
 RCC->CFGR|=1<<16;   //PLLSRC ON

 FLASH->ACR|=0x32;   //FLASH 2个延时周期
      
 RCC->CIR = 0x00000000;     //关闭所有中断
 //配置向量表     
#ifdef  VECT_TAB_RAM
 MY_NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else  
 MY_NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   //这里用到的就是flash启动
#endif
  
 RCC->CR|=0x00010000;  //外部高速时钟使能HSEON
 while(!(RCC->CR>>17));//等待外部时钟就绪
 RCC->CR|=0x01000000;  //PLLON
 while(!(RCC->CR>>25));//等待PLL锁定
 RCC->CFGR|=0x00000002;//PLL作为系统时钟 
 while(temp!=0x02)     //等待PLL作为系统时钟设置成功
 {  
  temp=RCC->CFGR>>2;
  temp&=0x03;
 }
    
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-4-15 23:08:42 | 显示全部楼层
我的那段代码,也是根据ST 的库部分来的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2012-2-13
在线时间
0 小时
 楼主| 发表于 2012-4-16 10:03:55 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
这个代码也是根据您给的函数改装的,就是感觉不太容易记忆,我就按照自己理解改动了一些,顺便换了一下顺序,便于记忆
回复 支持 反对

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2013-7-5
在线时间
6 小时
发表于 2014-3-13 20:26:42 | 显示全部楼层
大师们,能说说你们是怎么思考初始化的吗?我看到以后思想有点蒙,不知道该怎样去理解!请大师们指点
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-13 23:45:49 | 显示全部楼层
回复【4楼】shuidi_wangdan:
---------------------------------
多看看STM32的时钟树图
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2013-7-5
在线时间
6 小时
发表于 2014-3-14 19:27:43 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
好的,正在努力研究中!
回复 支持 反对

使用道具 举报

23

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-10-18
在线时间
1 小时
发表于 2014-10-18 22:09:20 | 显示全部楼层
大神,您能不能告诉我,各种寄存器的初始化步骤是从哪查询的??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-30 06:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表