定时器-输出比较PWM

image

打开时钟-->配置 时钟源-->配置 时基单元-->配置 输出比较单元-->配置 GPIO口

代码

void PWM_Init(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /*配置 时钟*/ TIM_InternalClockConfig(TIM2); TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式 TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1; //CK_CNT_OV=CK_PSC/(PSC+1)/(ARR+1) TIM_TimeBaseInitStruct.TIM_Prescaler=720-1;//PSC TIM_TimeBaseInitStruct.TIM_Period=100-1;//ARR TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0; TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct); //为更新预分频器和重复计数器的值,该函数会直接进入一次中断 TIM_ClearFlag(TIM2,TIM_FLAG_Update);//清除标志位 /*配置 输出比较单元*/ TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCStructInit(&TIM_OCInitStructure);//先初始化,再配置 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;//极性 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//使能 TIM_OCInitStructure.TIM_Pulse=0;//CCR的值 TIM_OC1Init(TIM2,&TIM_OCInitStructure); /*配置 GPIO*/ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//使用推挽输出,接入外设 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); TIM_Cmd(TIM2,ENABLE);//启动定时器,定时器开始计数。 }

要点/问题

结构体TIM_OCInitTypeDef的初始化

结构体TIM_OCInitTypeDef的成员过多,为了避免某些错误,应先对其初始化再对某些成员进行修改。

TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCStructInit(&TIM_OCInitStructure);//先初始化,再配置 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;//极性 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//使能 TIM_OCInitStructure.TIM_Pulse=0;//CCR的值

GPIO口的配置

设置推挽输出模式,使IO口连接到片上外设

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//使用推挽输出,接入外设

关于 输出极性(TIM_OCPolarity)

image

输出极性 及为设置表中 有效(无效)电平高(低)电平
TIM_OCPolarity_High(高电平 有效)
TIM_OCPolarity_Low (低电平 有效)

image

对应 输出模式控制器


__EOF__

本文作者Name_Y
本文链接https://www.cnblogs.com/yangck/p/18475267.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Name_Y  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示