完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
小弟在使用tim1输出4路pwm的时候。出现了几个问题:1、唯独ch1没有输出;2、ch2、3、4,频率本该是1k,结果出来125hz。pwm代码如下:TIM1_DeInit();
CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1,ENABLE); TIM1_TimeBaseInit(15,TIM1_COUNTERMODE_UP,1000,0); TIM1_OC1Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_DISABLE, Default_Pulse, TIM1_OCPOLARITY_LOW, TIM1_OCPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCIDLESTATE_RESET); TIM1_OC1PreloadConfig(DISABLE); TIM1_OC2Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_DISABLE, Default_Pulse, TIM1_OCPOLARITY_LOW, TIM1_OCPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCIDLESTATE_RESET); TIM1_OC2PreloadConfig(DISABLE); TIM1_OC3Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_DISABLE, Default_Pulse, TIM1_OCPOLARITY_LOW, TIM1_OCPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCIDLESTATE_RESET); TIM1_OC3PreloadConfig(DISABLE); TIM1_OC4Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, Default_Pulse, TIM1_OCPOLARITY_LOW, TIM1_OCIDLESTATE_SET); TIM1_OC4PreloadConfig(DISABLE); TIM1_CtrlPWMOutputs(ENABLE); TIM1_Cmd(ENABLE); 现猜测可能是使用了uart2,导致PC1/TIM1_CH1/UART2_CK这个引脚出了什么问题,所以才没有输出。如果是这个原因的话,我该怎么设置,在哪设置改掉啊。(好像也不是改选项字节,因为在afr里面都没看到pc1) 各位大哥,给点建议吧,谢啦 |
|
相关推荐
1个回答
|
|
根据您提供的信息,您在使用STM8S105C6的TIM1模块输出4路PWM时遇到了一些问题。以下是可能的原因和解决方案:
1. CH1没有输出: 这可能是由于CH1的引脚配置问题。请检查您的代码中是否正确配置了CH1的引脚,以及是否正确设置了CH1的PWM模式。例如,您需要确保CH1的引脚被设置为输出模式,并且CH1的PWM模式被正确配置。 2. CH2、CH3、CH4频率不是1kHz,而是125Hz: 这可能是由于TIM1的时钟配置问题。您需要确保TIM1的时钟源和时钟频率是正确的。以下是一些可能的解决方案: a. 检查您的系统时钟配置,确保系统时钟频率是正确的。STM8S105C6的系统时钟频率会影响TIM1的时钟频率。 b. 检查TIM1的预分频器设置。在您的代码中,您可能需要设置TIM1的预分频器,以便获得正确的PWM频率。例如,如果您的系统时钟频率是16MHz,那么预分频器可以设置为15,这样TIM1的计数频率就是1MHz(16MHz / (15 + 1) = 1MHz),从而实现1kHz的PWM频率。 c. 检查TIM1的自动重载寄存器(ARR)设置。在您的代码中,您设置了ARR为1000,这意味着PWM频率是系统时钟频率除以ARR。确保ARR的值是正确的,以便获得所需的PWM频率。 以下是修改后的代码示例: ```c TIM1_DeInit(); CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, ENABLE); // 设置系统时钟频率和TIM1的预分频器 CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, ENABLE); TIM1_TimeBaseInit(15, TIM1_COUNTERMODE_UP, 1000, 0); // 设置PWM模式 TIM1_OC1PreloadConfig(TIM1_OCPRELOAD_ENABLE); TIM1_OC2PreloadConfig(TIM1_OCPRELOAD_ENABLE); TIM1_OC3PreloadConfig(TIM1_OCPRELOAD_ENABLE); TIM1_OC4PreloadConfig(TIM1_OCPRELOAD_ENABLE); // 启动TIM1 TIM1_Cmd(ENABLE); ``` 请尝试这些解决方案,并根据您的具体需求调整代码。希望这能帮助您解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 16:28 , Processed in 0.839154 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号