完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
求助各路大虾,我在STM8S的评估板上准备实现PWM控制LED的亮暗,LED是接在PD7管脚上,采用tiM1 channel 4 输出PWM,可是怎么也出不来效果。请教是哪里出了问题,下面是我的设置。还有一个,在STVD编译环境下跟踪寄存器,发现TIM1_CCR寄存器竟然是“intrusive read”, 单步执行写CCR,根本就写不进去,青椒大虾们为什么CCR寄存器会标注"intrusive read"?多谢大虾们。
//use TIM1 PWM to control LED //set system clock CLK->PCKENR1 = 0x80; CLK->CMSR = 0xE1; //choose CLK HSI = 16Mhz as fMASTER. CLK->CKDIVR = 0x00; //set fHSI= fHSI RC output/8 = 16Mhz/1 = 16MHz //Becasue CPUDIV no any devide, so fMASTER = fHSI = 16Mhz //---------------------------- //init TIM1 base unit //---------------------------- TIM1->PSCRH = 0x00; TIM1->PSCRL = 0x00; //fCONT = fHSI = 16Mhz //set PWM freq TIM1->ARRH = 0x00; TIM1->ARRL = 0x7f; //PWM freq= 16Mhz/(0x7f+1)=16Mhz/128=15625Hz TIM1->CR1 = 0x00; TIM1->RCR = 0x00; //no repeat count; //set TIM1_CH4 //---------------------------- TIM1->CCER2 = 0x10; //CC4E(bit4)=1: OC4 output enable //CC4P(bit5)=0: high level is active; TIM1->CCMR4 = 0x60; //set channel 4 as PWM mode1, preload is disable TIM1->OISR = TIM1->OISR | 0xbf; //bit6(OIS4)=0, Output idle state is 0; //initialize PWM duty circle TIM1->CCR4H = 0x00; TIM1->CCR4L = 0x00; //PWM duty circle = CCR4/(ARR+1)*100% TIM1->IER = 0x00; //disable interrupt; TIM1->CR2 = 0x00; TIM1->CR1 = TIM1->CR1 |0x01; //start count. TIM1->BKR = 0x80; //enable; |
|
相关推荐
1个回答
|
|
首先,我们来分析一下您的问题。您正在尝试使用STM8S评估板上的TIM1通道4来实现PWM控制LED的亮度,但是没有得到预期的效果。您提供的代码片段中有一些设置,但是我们需要更完整的代码来更好地理解问题所在。
1. 确保您的硬件连接正确:LED连接到PD7管脚,并且确保LED的正极连接到PD7,负极连接到地(GND)。 2. 检查您的时钟设置:您提到了设置系统时钟,但是没有提供完整的时钟设置代码。确保您的时钟设置正确,以便为TIM1提供正确的时钟源。 3. 检查TIM1的配置:确保您正确配置了TIM1的预分频器、自动重载寄存器和模式。例如: ```c TIM1_DeInit(); TIM1_TimeBaseInit(TIM1_PRESCALER_16, 999); // 预分频器和自动重载寄存器的值可能需要根据您的需求进行调整 TIM1_PWMIConfig(TIM1_CHANNEL_4, TIM1_ICPolarity_Falling, 0, TIM1_ICPSC_OnePulse, 0); TIM1_Cmd(ENABLE); ``` 4. 设置PWM占空比:根据您的需求,设置TIM1通道4的比较值(CCR4)。例如: ```c TIM1_SetCompare4(您的占空比值); ``` 5. 检查您的中断设置:如果您使用了中断来更新PWM占空比,确保您的中断服务例程正确设置。 关于您提到的TIM1_CCR寄存器“intrusive read”的问题,这可能与STVD编译环境的寄存器查看器有关。在某些情况下,寄存器查看器可能会将某些寄存器标记为“intrusive read”,这意味着读取这些寄存器可能会影响其值。然而,这通常不会影响您的代码执行。您可以尝试在单步执行时直接修改CCR4寄存器的值,看看是否有所改善。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1252 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1266 浏览 1 评论
668 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
497 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1253 浏览 2 评论
1699浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
391浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
361浏览 3评论
348浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
325浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-12 15:20 , Processed in 0.793401 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191