STM32标准库通用定时器输出比较
1.STM32标准库时钟树设置2.通过keil内置标准库创建stm32工程3.STM32硬件IIC使用4.STM32FATFS文件系统移植5.STM32SPIFLASH读写6.STM32标准库内部Flash读写7.STM32F103xC,xD,xE引脚定义8.STM32标准库通用定时器PWM生成9.STM32标准库通用定时器计数10.STM32标准库基本定时器11.STM32标准库RTC时钟12.STM32ADC单通道转换13.STM32标准库串口DMA空闲中断接收14.STM32OLED使用15.STM32标准库低功耗
16.STM32标准库通用定时器输出比较
17.STM32标准库通用定时器输入捕获18.STM32硬件IIC使用STM32标准库通用定时器输出比较
1. 初始化
void TIM2_Init()
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); //使能TIM2时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能GPIOA时钟
GPIO_InitTypeDef GPIO_InitStructure; //定义一个GPIO_InitTypeDef类型的结构体
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; //定义一个TIM_TimeBaseInitTypeDef类型的结构体
TIM_OCInitTypeDef TIM_OCInitStructure; //定义一个TIM_OCInitTypeDef类型的结构体
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //选择要控制的GPIO引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //设置GPIO的模式为复用推挽
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置GPIO的输出速度为50MHz
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化GPIOA
TIM_TimeBaseInitStructure.TIM_Period = 1000-1; //设置在向上计数模式下计数器自动重装的值
TIM_TimeBaseInitStructure.TIM_Prescaler = 7200-1; //设置预分频的值
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置计数器模式:向上计数
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure); //初始化TIM2
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Active; //设置TIM2的通道3为PWM模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //使能TIM2的通道3输出
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; //设置TIM2的通道3空闲状态为高电平
TIM_OC3Init(TIM2,&TIM_OCInitStructure); //初始化TIM2的通道3
TIM_OC3PreloadConfig(TIM2,TIM_OCPreload_Enable); //使能TIM2的通道3的预装载寄存器
TIM_CtrlPWMOutputs(TIM2,ENABLE); //使能TIM2的通道3的输出
TIM_Cmd(TIM2,ENABLE); //启动TIM2
}
输出比较模式与PWM模式大致相同,区别只有TIM_OCMode参数的不同。
- TIM_OCMode:定时器比较模式
- TIM_OCMode_Timing:定时器输出冻结,在这种情况下,不会触发输出通道的输出
- TIM_OCMode_Active:单脉冲输出模式,在这种情况下会输出一个脉冲然后将输出通道置高
- TIM_OCMode_Inactive:单脉冲输出模式,在这种情况下会输出一个脉冲然后将输出通道置低
- TIM_OCMode_Toggle:定时器输出翻转模式,在这种情况下,通道会输出类似PWM的方波,但是该方波占空比固定为50%,且周期为同配置下PWM波的2倍。
- TIM_OCMode_PWM1:定时器输出PWM模式1,在这种情况下,通道会输出PWM方波,占空比可变。
- TIM_OCMode_PWM2:定时器输出PWM模式2,在这种情况下,通道会输出PWM方波,占空比可变,但该方波与TIM_OCMode_PWM1输出的方波反相。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤