芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

stm32定时器3四路PWM输出驱动芯片复制

  1. 芯片复制#include "L9110.h"
  2. 芯片复制#include "usart.h"
  3. 芯片复制#include "led.h"


  4. //通用定时器3中断初始化
  5. //这里时钟选择为APB1的2倍,而APB1为36M
  6. //arr:自动重装值。
  7. //psc:时钟预分频数
  8. //这里使用的是定时器3!
  9. void TIM3_Int_Init(u16 arr,u16 psc)
  10. {
  11.   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  12.         NVIC_InitTypeDef NVIC_InitStructure;

  13.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
  14.         TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值         计数到5000为500ms
  15.         TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值  10Khz的计数频率  
  16.         TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
  17.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
  18.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

  19.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断

  20.         NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断
  21.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级
  22.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级
  23.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
  24.         NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

  25.         TIM_Cmd(TIM3, ENABLE);  //使能TIMx外设
  26.                                                          
  27. }
  28. //定时器3中断服务程序
  29. void TIM3_IRQHandler(void)   //TIM3中断
  30. {
  31.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
  32.                 {
  33.                 TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源
  34.                 LED1=!LED1;
  35.                 }
  36. }

  37. //TIM3 PWM部分初始化
  38. //PWM输出初始化
  39. //arr:自动重装值
  40. //psc:时钟预分频数
  41. void TIM3_PWM_Init(u16 arr,u16 psc)
  42. {  
  43.         GPIO_InitTypeDef GPIO_InitStructure;
  44.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  45.         TIM_OCInitTypeDef  TIM_OCInitStructure;
  46.         

  47.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);        //使能定时器3时钟
  48.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  |  RCC_APB2Periph_GPIOA, ENABLE);  //使能GPIO外设功能模块时钟
  49.          

  50.    //设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形        GPIOA.6,7
  51.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; //TIM_CH2,TIM_CH1
  52.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
  53.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  54.         GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO
  55.         
  56.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; //TIM_CH3,TIM_CH4
  57.         GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO

  58.    //初始化TIM3
  59.         TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
  60.         TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
  61.         TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
  62.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
  63.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信