完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请教下使用同一个定时器但是使用的通道不同功能是否可行
如使用定时器3,一个通道作为pwm输出,另外一个通道作为 红外遥控器 捕捉输入 通道 2 作为 pwm 通道 3 作为 红外遥控器输入捕捉 目前 定时器 3 的定时都设置为 100us,貌似 红外遥控器可以,但是 如果 pwm 不进行调节是可以的,但是只要进行调节 屏幕就会出现闪烁或者 屏幕亮度没有变化 红外遥控器配置 static void TIM3_IR_Init(void) { uint16_t uwPrescalerValue = 0; __IO uint32_t freq = HAL_RCC_GetSysClockFreq(); // HAL_RCC_GetHCLKFreq(); // /*##-1- Configure the TIM peripheral #######################################*/ /* Set TIMx instance */ TIM_HandleIR.Instance = TIM3; /* 预分频数,定时器主频=系统频率/2/分频系数-1,即一个时钟脉冲为100us */ uwPrescalerValue = (uint32_t) ( (uint32_t)( (uint32_t)(freq / 2UL) / 10000UL) - 1); TIM_HandleIR.Init.Period = 0x800; // 最大计数值 0xffff TIM_HandleIR.Init.Prescaler = uwPrescalerValue; // 遥控器解码与分频系数设置,100us TIM_HandleIR.Init.ClockDivision = 0; TIM_HandleIR.Init.CounterMode = TIM_COUNTERMODE_UP; TIM_HandleIR.Init.RepetitionCounter = 0; HAL_TIM_IC_Init( TIM_HandleIR) ; //初始化TIM1输入捕获参数 sICConfigIR.ICPolarity=TIM_ICPOLARITY_BOTHEDGE; //双沿触发捕获 sICConfigIR.ICSelection=TIM_ICSELECTION_DIRECTTI;//映射到TI1上 sICConfigIR.ICPrescaler=TIM_ICPSC_DIV1; //配置输入分频,不分频 sICConfigIR.ICFilter= 0; //0-0x03; 的数值均可以,默认选择 0,,0x03=8个定时器时钟周期滤波 HAL_TIM_IC_ConfigChannel( TIM_HandleIR, sICConfigIR,TIM_CHANNEL_IRD);//配置TIM3通道3 HAL_TIM_IC_Start_IT( TIM_HandleIR,TIM_CHANNEL_IRD); //开始捕获TIM3的通道3 } pwm 配置 { pulse = 0x800/2; HAL_TIM_PWM_DeInit( TimHandle); /* PWM频率 = TIMxCLK / usPrescaler + 1)/usPeriod + 1)*/ TimHandle.Instance = TIMx; TimHandle.Init.Prescaler = 20000; // 100us usPrescaler; TimHandle.Init.Period = 0x800; //usPeriod; TimHandle.Init.ClockDivision = 0; TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP; TimHandle.Init.RepetitionCounter = 0; TimHandle.Init.AutoReloadPreload = 0; HAL_TIM_PWM_Init( TimHandle); /* 配置定时器PWM输出通道 */ sConfig.OCMode = TIM_OCMODE_PWM1; sConfig.OCPolarity = TIM_OCPOLARITY_HIGH; sConfig.OCFastMode = TIM_OCFAST_DISABLE; sConfig.OCNPolarity = TIM_OCNPOLARITY_HIGH; sConfig.OCNIdleState = TIM_OCNIDLESTATE_RESET; sConfig.OCIdleState = TIM_OCIDLESTATE_RESET; /* 占空比 */ sConfig.Pulse = pulse; HAL_TIM_PWM_ConfigChannel( TimHandle, sConfig, TimChannel[_ucChannel]); /* 启动PWM输出 */ HAL_TIM_PWM_Start( TimHandle, TimChannel[_ucChannel]); } 他们需要共用计数器的话,改如何设置参数才行啊 ??????????? |
|
相关推荐
1个回答
|
|
同一个定时器不同通道可以运行不同功能,但工作频率必须相同。
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1602 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1536 浏览 1 评论
967 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
680 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1579 浏览 2 评论
1860浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
641浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
513浏览 3评论
527浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
500浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 14:40 , Processed in 0.769537 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号