stm32f103zet6时钟


voidRCC_HSE_Configuration(void) //HSE作为PLL时钟,PLL作为SYSCLK
{
RCC_DeInit(); /*将外设RCC寄存器重设为缺省值 */
RCC_HSEConfig(RCC_HSE_ON);
/*设置外部高速晶振(HSE) HSE晶振打开(ON)*/
  if(RCC_WaitForHSEStartUp() == SUCCESS)
   { 
/*等待HSE起振,  SUCCESS:HSE晶振稳定且就绪*/ 
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/*设置AHB时钟(HCLK)RCC_SYSCLK_Div1——AHB时钟 = 系统时*/ 
RCC_PCLK2Config(RCC_HCLK_Div1);
/*设置高速AHB时钟(PCLK2)RCC_HCLK_Div1——APB2时钟 = HCLK*/    
RCC_PCLK1Config(RCC_HCLK_Div2);
/*设置低速AHB时钟(PCLK1)RCC_HCLK_Div2——APB1时钟 = HCLK / 2*/
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
/*设置PLL时钟源及倍频系数*/   
RCC_PLLCmd(ENABLE);    /*使能PLL */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) ==RESET) ;
/*检查指定的RCC标志位(PLL准备好标志)设置与否*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 
/*设置系统时钟(SYSCLK) */ 
while(RCC_GetSYSCLKSource() != 0x08);    
/*0x08:PLL作为系统时钟 */ 
 }
}


  




























首先设置好系统时钟源与频率等问题后,设置计数器。

void delay_ms(u32 i)
{
u32 temp;
SysTick->LOAD=9000*i;  //设置重装数值, 72MHZ时
SysTick->CTRL=0X01; //使能,减到零是无动作,采用外部时钟源
SysTick->VAL=0; //清零计数器
do
{
temp=SysTick->CTRL;   //读取当前倒计数值
}
while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达
SysTick->CTRL=0; //关闭计数器
SysTick->VAL=0; //清空计数器
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值