完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
求各位大神解救,此PWM无输出,已经将PD2设置了推挽输出方式,并且在optionbyte中也设置了PORT D2 alternate function=TIM2_CH3了,但是下载到芯片无输出呢,求大神帮帮忙~~
程序如下: #include "stm8s103f.h" void delayms(unsigned int ms) { unsigned char i; while(ms!=0) { for(i=0;i<250;i++); for(i=0;i<75;i++); ms--; } } void CLK_Init(void) { CLK_CKDIVR=0x11; } void TIM2_Init(void) { TIM2_CCMR3|=0x70; TIM2_CCER1|=0x30; TIM2_ARRH=0; TIM2_ARRL=0xFF; TIM2_CCR3H=0; TIM2_CCR3L=0; TIM2_PSCR=0; TIM2_CR1|=0x01; } main() { unsigned char i; PD_DDR=0x04; PD_CR1=0x04; PD_CR2=0x00; CLK_Init(); TIM2_Init(); while(1) { for(i=0;i<128;i++) { TIM2_CCR3H=0; TIM2_CCR3L=i; delayms(5); } for(i=128;i>0;i--) { TIM2_CCR3H=0; TIM2_CCR3L=i; delayms(5); } } } |
|
相关推荐
1个回答
|
|
首先,让我们分析一下您提供的代码和描述,以确定可能的问题所在。
1. 您已经将PD2设置为推挽输出方式,这是正确的。 2. 您已经在optionbyte中设置了PORT D2 alternate function=TIM2_CH3,这也是正确的。 现在,让我们检查一下您的代码。由于您只提供了部分代码,我们将关注这部分代码: ```c #include "stm8s103f.h" void delayms(unsigned int ms){ unsigned char i; while(ms!=0){ for(i=0;i<250;i++); } } ``` 这段代码定义了一个延时函数,但是它并没有配置TIM2以生成PWM信号。为了解决这个问题,您需要添加以下步骤: 1. 初始化TIM2的时钟源和预分频器。 2. 设置TIM2的自动重载寄存器(ARR)和捕获/比较模式寄存器(CCR3)以生成所需的PWM占空比。 3. 配置TIM2的通道3(CH3)为PWM模式。 以下是一个示例代码,展示了如何配置TIM2以生成PWM信号: ```c #include "stm8s103f.h" void TIM2_PWM_Init(void) { /* 启用TIM2 时钟 */ CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE); /* 配置TIM2 预分频器和时钟源 */ TIM2_PrescalerConfig(TIM2_Prescaler_1, TIM2_PSCReloadMode_Immediate); TIM2_TimeBaseInit(TIM2_Prescaler_1 - 1, TIM2_CounterMode_Up, 10000 - 1, 0); /* 配置TIM2 通道3 为PWM模式 */ TIM2_OC3Init(TIM2_OCMode_PWM1, TIM2_OutputState_Enable, TIM2_OutputNState_Disable, TIM2_Pulse_Low, 50, TIM2_OCPolarity_High, TIM2_OCNPolarity_High); TIM2_OC3PreloadConfig(ENABLE); /* 启动TIM2 */ TIM2_Cmd(ENABLE); } void delayms(unsigned int ms) { unsigned char i; while (ms != 0) { for (i = 0; i < 250; i++); ms--; } } int main(void) { /* 初始化TIM2 以生成PWM信号 */ TIM2_PWM_Init(); /* 主循环 */ while (1) { /* 执行其他任务 */ } } ``` 请将此代码添加到您的项目中,并确保在主函数中调用`TIM2_PWM_Init()`以初始化TIM2。这应该能够解决您的问题。如果仍然没有输出,请检查您的硬件连接和设置。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
567浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 02:55 , Processed in 0.798418 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号