首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32驱动无刷电机的相关定时器配置(2)

STM32驱动无刷电机的相关定时器配置(2)

void RCC_Configuration(void)
{
  RCC_DeInit();                                                              //将外设 RCC寄存器重设为缺省值
  RCC_HSEConfig(RCC_HSE_ON);                              //设置外部高速晶振(HSE)
  HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待 HSE 起振,该函数将等待直到 HSE 就绪,或者在超时的情况下退出
  if(HSEStartUpStatus == SUCCESS)                          //如果 HSE 就绪,则开始设置
  {
     RCC_HCLKConfig(RCC_SYSCLK_Div1);                  //设置 AHB 增强型高速总线的时钟(HCLK)
         RCC_PCLK2Config(RCC_HCLK_Div1);                  //设置高速 AHB 时钟(PCLK2)
         RCC_PCLK1Config(RCC_HCLK_Div2);                  //设置高速 AHB 时钟(PCLK1)
         FLASH_SetLatency(FLASH_Latency_2);              //设置代码延时值——两个延时周期
         FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //使能预先取指令缓存
         RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);   //设置 PLL 时钟源及倍频系数,外部HSE默认8MHz,倍频系数为9,则PLL时钟为72MHz
         RCC_PLLCmd(ENABLE);                                                                   //使能PLL
         while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)           //如果检查指定的 RCC 标志位设置——PLL未就绪,则循环等待
         {
         }
         RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //设置PLL时钟为系统时钟
         while(RCC_GetSYSCLKSource()!= 0x08)                //如果用作系统的时钟源不是PLL,则循环等待。
         {
         }
  }
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);//使能GPIOA GPIOB TIM1 外设时钟
}
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;  //选中引脚8、9、10、11
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                                                          //设置选中引脚的最高输出速率为50MHz
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                                                                          //设置选中管脚的工作状态为复用推挽输出。
  GPIO_Init(GPIOA,&GPIO_InitStructure);                                                                                                  //根据 GPIO_InitStruct中指定的参数初始化外设 GPIOA 寄存器
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; //        GPIO_InitStruct中指定的参数未变,所以只改变需要改变的参数                  
  GPIO_Init(GPIOB,&GPIO_InitStructure);                                                                         //根据 GPIO_InitStruct中指定的参数初始化外设 GPIOB 寄存器
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;        //设置选中管脚的工作状态为输入浮空
  GPIO_Init(GPIOB,&GPIO_InitStructure);                                 
}
void NVIC_Configuration(void)
{
  //NVIC_InitTypeDef NVIC_InitStructure;
  
  #ifdef VECT_TAB_RAM
     NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);
  #else
     NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
  #endif
}
#ifdef DEBUG
void assert_failed(u8 *file,u32 line)          //返回出错时的行列信息
{
}
#endif
继承事业,薪火相传
返回列表