STM32学习笔记六TIM 待补充.docx

上传人:b****2 文档编号:17995691 上传时间:2023-08-05 格式:DOCX 页数:6 大小:15.64KB
下载 相关 举报
STM32学习笔记六TIM 待补充.docx_第1页
第1页 / 共6页
STM32学习笔记六TIM 待补充.docx_第2页
第2页 / 共6页
STM32学习笔记六TIM 待补充.docx_第3页
第3页 / 共6页
STM32学习笔记六TIM 待补充.docx_第4页
第4页 / 共6页
STM32学习笔记六TIM 待补充.docx_第5页
第5页 / 共6页
STM32学习笔记六TIM 待补充.docx_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

STM32学习笔记六TIM 待补充.docx

《STM32学习笔记六TIM 待补充.docx》由会员分享,可在线阅读,更多相关《STM32学习笔记六TIM 待补充.docx(6页珍藏版)》请在冰点文库上搜索。

STM32学习笔记六TIM 待补充.docx

STM32学习笔记六TIM待补充

STM32学习笔记(六)----TIM(待补充)

1、使能TIM时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM*,ENABLE);

2、基础设置

TIM_TimeBaseStructure.TIM_Period计数值

TIM_TimeBaseStructure.TIM_Prescaler预分频,此值+1为分频的除数

TIM_TimeBaseStructure.TIM_ClockDivision=0时钟因子待做进一步说明

TIM_TimeBaseStructure.TIM_RepetitionCounter=0待做进一步说明

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up向上计数

TIM_CounterMode_Dowm向下计数

TIM_CounterMode_CenterAligned1中心对齐方式1

TIM_CounterMode_CenterAligned2中心对齐方式2

TIM_CounterMode_CenterAligned3中心对齐方式3

TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);

3、通道设置

----------------------------------------------------------------------------------------------

输出比较&PWM通道

TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_Timing输出比较时间模式(输出引脚冻结无效)

TIM_OCMode_Active输出比较主动模式(匹配时设置输出引脚为有效电平,当计数值为比较/捕获寄存器值相同时,强制输出为高电平)

TIM_OCMode_Inactive;输出比较非主动模式(匹配时设置输出引脚为无效电平,当计数值为比较/捕获寄存器值相同时,强制输出为低电平)

TIM_OCMode_Toggle输出比较触发模式(翻转。

当计数值与比较/捕获寄存器值相同时,翻转输出引脚的电平)

TIM_OCMode_PWM1向上计数时,当TIMx_CNT<TIMx_CCR*时,输出电平有效,否则为无效

向下计数时,当TIMx_CNT>TIMx_CCR*时,输出电平无效,否则为有效

TIM_OCMode_PWM2与PWM1模式相反

TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Disable禁止OC*输出

TIM_OutputState_Enable开启OC*输出到对应引脚

TIM_OCInitStructure.TIM_OutputNState=TIM_OutputNState_Disable互补输出使能。

关闭OC*N输出

TIM_OutputNState_Enable互补输出使能。

开启OC*N输出到对应的引脚

TIM_OCInitStructure.TIM_Pulse比较/PWM通道的值

TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;极性为正

TIM_OCPolarity_Low极必为负

TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_High;极性为正

TIM_OCNPolarity_Low极必为负

TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set当MOE=0时,如果实现了OC*N,则死区后OC*=1

TIM_OCIdleState_Reset当MOE=0时,如果实现了OC*N,则死区后OC*=0

TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCIdleNState_Set当MOE=0时,死区后OC*N=1

TIM_OCIdleNState_Reset当MOE=0时,死区后OC*N=0

TIM_OC1Init(TIM2,&TIM_OCInitStructure);

TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Disable);禁止OC1重装载,即TIM*_CCR*的数一经写入立即生效,否则要在下一个更新事件到来后才被装入寄存器TIM_CtrlPWMOutputs(TIM1,ENABLE);如果使用PWM模式,则此句一定不能省

----------------------------------------------------------------------------------------------

输入捕获通道

TIM_ICInitStructure.TIM_Channel=TIM_Channel_1

TIM_Channel_2

TIM_Channel_3

TIM_Channel_4

TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising输入/捕获上升沿有效

TIM_ICPolarity_Falling输入/捕获下降沿有效

TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTIIC*输入引脚选择,针对IC1/IC2有不同的定义

TIM_ICSelection_IndirectTI

TIM_ICSelection_TRC

TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1输入模式下,捕获端口上的每一次边沿都触发一次捕获

TIM_ICPSC_DIV2输入模式下,每2次事件触发一次捕获

TIM_ICPSC_DIV4输入模式下,每4次事件触发一次捕获

TIM_ICPSC_DIV8输入模式下,每8次事件触发一次捕获

TIM_ICInitStructure.TIM_ICFilter=捕获采样频率,详见TIM*_CCMR->IC*F说明

----------------------------------------------------------------------------------------------

死区设置

TIM_BDTRInitStructure.TIM_OSSRState=TIM_OSSRState_Enable

TIM_OSSRState_Disable

TIM_BDTRInitStructure.TIM_OSSRIState=TIM_OSSRIState_Enable

TIM_OSSRIState_Disable

TIM_BDTRInitStructure.TIM_LOCKLevel=TIM_LOCKLevel_OFF

TIM_LOCKLevel_1

TIM_LOCKLevel_2

TIM_LOCKLevel_3

TIM_BDTRInitStructure.TIM_DeadTime=这里调整死区大小0-0xff

TIM_BDTRInitStructure.TIM_Break=TIM_Break_Enable

TIM_Break_Disable

TIM_BDTRInitStructure.TIM_BreakPolarity=TIM_BreakPolarity_Low

TIM_BreakPolarity_High

TIM_BDTRInitStructure.TIM_AutomaticOutput=TIM_AutomaticOutput_Enable

TIM_AutomaticOutPut_Disable4、配置中断

5、开启TIM

----------------------------------------------------------------------------------------------------

例:

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

TIM_OCInitTypeDefTIM_OCInitStructure;

u16CCR1_Val=60000;

u16CCR2_Val=40000;

u16CCR3_Val=20000;

u16CCR4_Val=10000;/*TIM2clockenable*/

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

/*基础设置*/

TIM_TimeBaseStructure.TIM_Period=65535;//计数值

TIM_TimeBaseStructure.TIM_Prescaler=7200-1;//预分频,此值+1为分频的除数

TIM_TimeBaseStructure.TIM_ClockDivision=0x0;//

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);/*比较通道1*/

TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_Inactive;//输出比较非主动模式

TIM_OCInitStructure.TIM_Pulse=CCR1_Val;

TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//极性为正

TIM_OC1Init(TIM2,&TIM_OCInitStructure);

TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Disable);//禁止OC1重装载,其实可以省掉这句,因为默认是4路都不重装的./*比较通道2*/

TIM_OCInitStructure.TIM_Pulse=CCR2_Val;TIM_OC2Init(TIM2,&TIM_OCInitStructure);

TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Disable);/*比较通道3*/

TIM_OCInitStructure.TIM_Pulse=CCR3_Val;TIM_OC3Init(TIM2,&TIM_OCInitStructure);

TIM_OC3PreloadConfig(TIM2,TIM_OCPreload_Disable);/*比较通道4*/

TIM_OCInitStructure.TIM_Pulse=CCR4_Val;TIM_OC4Init(TIM2,&TIM_OCInitStructure);

TIM_OC4PreloadConfig(TIM2,TIM_OCPreload_Disable);/*使能预装载*/

TIM_ARRPreloadConfig(TIM2,ENABLE);

/*预先清除所有中断位*/

TIM_ClearITPendingBit(TIM2,TIM_IT_CC1|TIM_IT_CC2|TIM_IT_CC3|TIM_IT_CC4|TIM_IT_Update);

/*4个通道和溢出都配置中断*/

TIM_ITConfig(TIM2,TIM_IT_CC1|TIM_IT_CC2|TIM_IT_CC3|TIM_IT_CC4|TIM_IT_Update,ENABLE);/*允许TIM2开始计数*/

TIM_Cmd(TIM2,ENABLE);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 起诉状

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2