STM32 PWM输出 (STM32F103C8T6 TIM2 |
您所在的位置:网站首页 › stm32f103c8t6例程 › STM32 PWM输出 (STM32F103C8T6 TIM2 |
以STM32F103C8T6,uVision开发环境为例,注意了,若使用其它相近芯片,本文仅供参考。 以下是main.c,执行后引脚A1输出频率20KHz,占空比75%的方波。
#include "stm32f10x.h" #include "stm32f10x_tim.h" //**********************************************************************************void GPIO_CFG() //PWM输出引脚A1函数{ GPIO_InitTypeDef GPIO_InitStructure; //声明GPIO_InitStructure结构变量 // 原版创作,引用请指明出处 https://www.cnblogs.com/beiyhs/p/12312888.html 北有寒山 /* 使能GPIOA时钟 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能AHB预分频器到端口A的开关RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //引脚复用 进行重映射时需要开启AFIO 时钟 /* 配置LED相应引脚PA1*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //指定脚1输出GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //指定模式为功能复用推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设定端口最快输出50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //按以上参数设置A口} //*********************************************************************************void TIM2_PWM_Init(uint16_t period, uint16_t prescaler){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //声明TIM_TimeBaseStructure结构变量TIM_OCInitTypeDef TIM_OCInitStructure; //声明TIM_OCInitStructure结构变量 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使能AHB预分频器到TIM2TIM_TimeBaseStructure.TIM_Period = period; //设置TIM2自动重装周期值TIM_TimeBaseStructure.TIM_Prescaler = prescaler; //设置TIM2预分频值TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up; //向上计数TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //按以上参数初始化TIM2 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //PWM2模式TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能TIM_OCInitStructure.TIM_Pulse =1350; //通道占空比系数TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出低TIM_OC2Init(TIM2,&TIM_OCInitStructure); //按以上参数初始化TIM2 TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能预装载寄存器TIM_Cmd(TIM2, ENABLE); //使能TIM2} //*********************************************************************************int main(void){ GPIO_CFG() ; // PWM输出引脚A1函数 TIM2_PWM_Init(1799, 1); // 时钟/PWM初始化函数 while (1) {}} //*********************************************************************************
说明: 引脚A1输出频率=系统频率72M/(1+1) / (1799+1) = 20KHz 占空比=1350 / (1799+1)*100% = 75%
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |