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

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

单片机解密stm32f103 TIM3_CH1(PA6)为PWM输出

  1. 单片机解密#include "stm32f10x.h"

  2. 单片机解密// 初始化TIM3_CH1(PA6)为PWM输出
  3. void TIM3_PWM_Init(uint16_t arr, uint16_t psc)
  4. {
  5.     GPIO_InitTypeDef GPIO_InitStructure;
  6.     TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  7.     TIM_OCInitTypeDef TIM_OCInitStructure;

  8.     // 使能时钟
  9.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    // 使能TIM3时钟
  10.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   // 使能GPIOA时钟

  11.     // 配置PA6为复用推挽输出(TIM3_CH1)
  12.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  13.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;         // 复用推挽输出
  14.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  15.     GPIO_Init(GPIOA, &GPIO_InitStructure);

  16.     // 初始化TIM3时基单元
  17.     TIM_TimeBaseStructure.TIM_Period = arr;                 // 自动重装载值
  18.     TIM_TimeBaseStructure.TIM_Prescaler = psc;              // 预分频值
  19.     TIM_TimeBaseStructure.TIM_ClockDivision = 0;            // 时钟分频
  20.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数
  21.     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

  22.     // 初始化TIM3_CH1为PWM模式
  23.     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;       // PWM模式1
  24.     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; // 使能输出
  25.     TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; // 输出极性高
  26.     TIM_OC1Init(TIM3, &TIM_OCInitStructure);                // 配置通道1

  27.     // 使能TIM3预装载寄存器
  28.     TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
  29.     TIM_ARRPreloadConfig(TIM3, ENABLE);

  30.     // 启动TIM3
  31.     TIM_Cmd(TIM3, ENABLE);
  32. }

  33. int main(void)
  34. {
  35.     uint16_t pwm_val = 0;
  36.     uint8_t dir = 1;

  37.     // 初始化系统时钟(72MHz)
  38.     SystemInit();

  39.     // 初始化TIM3:PWM频率 = 72MHz / [(psc+1)*(arr+1)]
  40.     // 此处配置为 72MHz/(71+1)/(999+1) = 1000Hz(1kHz)
  41.     TIM3_PWM_Init(999, 71);

  42.     while (1)
  43.     {
  44.         // 缓慢改变占空比(0~100%循环)
  45.         if (dir)
  46.             pwm_val++;
  47.         else
  48.             pwm_val--;

  49.         if (pwm_val > 999)
  50.             dir = 0;
  51.         if (pwm_val == 0)
  52.             dir = 1;

  53.         // 设置PWM占空比(通过比较值控制)
  54.         TIM_SetCompare1(TIM3, pwm_val);

  55.         // 延时约10ms
  56.         for (int i = 0; i < 720000; i++);
  57.     }
  58. }



联系方式

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

在线客服
热线电话

企业微信