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

捕获/ 比较通道(2)

捕获/ 比较通道(2)

void RCC_cfg()

{

       //定义错误状态变量

       ErrorStatus HSEStartUpStatus;



       //将RCC寄存器重新设置为默认值

       RCC_DeInit();



       //打开外部高速时钟晶振

       RCC_HSEConfig(RCC_HSE_ON);



       //等待外部高速时钟晶振工作

       HSEStartUpStatus = RCC_WaitForHSEStartUp();

       if(HSEStartUpStatus == SUCCESS)

       {

              //设置AHB时钟(HCLK)为系统时钟

              RCC_HCLKConfig(RCC_SYSCLK_Div1);



              //设置高速AHB时钟(APB2)为HCLK时钟

              RCC_PCLK2Config(RCC_HCLK_Div1);



              //设置低速AHB时钟(APB1)为HCLK的2分频

              RCC_PCLK1Config(RCC_HCLK_Div2);



              //设置FLASH代码延时

              FLASH_SetLatency(FLASH_Latency_2);



              //使能预取指缓存

              FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);



              //设置PLL时钟,为HSE的9倍频 8MHz * 9 = 72MHz

              RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);



              //使能PLL

              RCC_PLLCmd(ENABLE);



              //等待PLL准备就绪

              while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);



              //设置PLL为系统时钟源

              RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);



              //判断PLL是否是系统时钟

              while(RCC_GetSYSCLKSource() != 0x08);

       }



       //开启TIM3的时钟

       RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

       //开启GPIOB的时钟和复用功能

       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);



}



void GPIO_cfg()

{

       GPIO_InitTypeDef GPIO_InitStructure;





       //部分映射,将TIM3_CH2映射到PB5

//     GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);

       GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);



       //选择引脚5

       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

       //输出频率最大50MHz                                                        

       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

       //复用推挽输出                                             

      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;



       GPIO_Init(GPIOB,&GPIO_InitStructure);

}



void TIMER_cfg()

{

       TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;



       //重新将Timer设置为缺省值

       TIM_DeInit(TIM3);

       //采用内部时钟给TIM3提供时钟源

       TIM_InternalClockConfig(TIM3);

       //预分频系数为0,即不进行预分频,此时TIMER的频率为72MHz

       TIM_TimeBaseStructure.TIM_Prescaler = 0;

       //设置时钟分割

       TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

       //设置计数器模式为向上计数模式

       TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

       //设置计数溢出大小,每计7200个数就产生一个更新事件,即PWM的输出频率为10kHz

       TIM_TimeBaseStructure.TIM_Period = 7200 - 1;

       //将配置应用到TIM3中

       TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

}
继承事业,薪火相传
返回列表