完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题是这样的:
定义了一个数组,内容为PWM波的占空比对应的脉冲数,本人利用DMA通道将数组传输至tiM1的CCR,TIM1设置为PWM输出,从而改变PWM波的脉冲比,发现传输至TIM1的CCR,TIM1的CH1一直输出高电平,而不是占空比变化的PWM波。而传输至TIM2或TIM3等通用定时器的CH口,PWM波的输出及占空比均正常。 下面是传输至TIM1的代码: #include "STM32f10x.h" u16 buf1[20] = {5,14,22,30,37,44,49,53,56,57,57,56,53,49,44,37,30,22,14,5}; void DMA_Configuration(void) { DMA_InitTypeDef D; //????????90??? DMA_DeInit(DMA1_Channel2); //DMA1_3????? D.DMA_PeripheralBaseAddr = (u32)0x40000034; //DMA???? TIM3_CCR1_Address TIM3-1£º40000434 TIM1-1£º40012C34 TIM1-2£º40012C38 D.DMA_MemoryBaseAddr = (u32)buf1; //DMA???? TIM2-1£º40000034 TIM3-2:40000438 D.DMA_DIR = DMA_DIR_PeripheralDST; //DST????????????,SRC?????? D.DMA_BufferSize = 20; //DMA???? D.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //?????????? D.DMA_MemoryInc = DMA_MemoryInc_Enable; //?????????? D.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //????16bit D.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //????16bit D.DMA_Mode = DMA_Mode_Circular; //??????? D.DMA_Priority = DMA_Priority_High; //DMA?????? D.DMA_M2M = DMA_M2M_Disable; //?????????? DMA_Init(DMA1_Channel2, D); //???DMA1 DMA_Cmd(DMA1_Channel2, ENABLE); //DMA1_3?? } static void GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3, ENABLE); //TIM3?? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_TIM1, ENABLE); //PA?PB?? RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE); //GPIOA ??: TIM3 channel 1 ? 2 ???? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // ?????? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_6 | GPIO_Pin_0 | GPIO_Pin_7; GPIO_Init(GPIOA, GPIO_InitStructure); } int main(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; SystemInit();//???????72MHz GPIO_Config(); //???? DMA_Configuration(); //??DMA //????? TIM_TimeBaseStructure.TIM_Period = 71; //?????0???999,??1000?,??????? TIM_TimeBaseStructure.TIM_Prescaler = 0; //?????:????,??36MHz TIM_TimeBaseStructure.TIM_ClockDivision = 0; //????????:??? TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //?????? //TIM_TimeBaseStructure.TIM_RepetitionCounter = 2; TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure); //PWM??1???? TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //???PWM??1 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = buf1[0]; //?????,???????????,?????? TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //?????????CCR1_Val????? TIM_OC1Init(TIM2, TIM_OCInitStructure); //????1 TIM_DMACmd(TIM2, TIM_DMA_Update, ENABLE); //TIM3 DMA????,?:TIM3_Update????DMA???DMA1_chanel3 // TIM_DMACmd(TIM1, TIM_DMA_CC1, ENABLE); //TIM3 DMA????,?:TIM3_CC1????DMA???DMA1_chanel6 TIM_Cmd(TIM2, ENABLE); //TIM3?? //TIM_CtrlPWMOutputs(TIM3, ENABLE); //PWM?? while (1) {} } |
|
相关推荐
2个回答
|
|
示波器上检测下捕获脉冲宽度
|
|
|
|
从您提供的信息来看,您在使用STM32F10x系列微控制器,通过DMA通道将一个数组传输到TIM1的CCR寄存器,以实现PWM波的占空比变化。但是,您发现TIM1的CH1一直输出高电平,而不是预期的占空比变化的PWM波。而传输至TIM2或TIM3等通用定时器的CH口,PWM波的输出及占空比均正常。
这个问题可能是由于以下几个原因导致的: 1. TIM1的时钟配置问题:请确保您正确配置了TIM1的时钟源和时钟频率。如果时钟配置不正确,可能导致PWM波形不正确。 2. TIM1的模式配置问题:请检查您是否正确设置了TIM1的工作模式。例如,您需要确保TIM1处于PWM模式1或模式2。 3. TIM1的通道配置问题:请确保您正确配置了TIM1的通道(CH1),包括极性、输出比较模式等。 4. DMA传输配置问题:请检查您的DMA传输配置,确保DMA通道正确地将数组中的值传输到TIM1的CCR寄存器。 5. 代码问题:您提供的代码片段不完整,无法判断是否存在其他问题。请检查您的完整代码,确保所有相关的初始化和配置函数都已正确执行。 为了解决这个问题,您可以尝试以下步骤: 1. 检查TIM1的时钟配置,确保时钟源和时钟频率正确。 2. 检查TIM1的工作模式,确保它处于PWM模式1或模式2。 3. 检查TIM1的通道配置,包括极性、输出比较模式等。 4. 检查DMA传输配置,确保DMA通道正确地将数组中的值传输到TIM1的CCR寄存器。 5. 检查您的完整代码,确保所有相关的初始化和配置函数都已正确执行。 6. 如果问题仍然存在,尝试使用另一个DMA通道或另一个TIMx通道进行测试,以排除硬件故障的可能性。 希望这些建议能帮助您解决问题。如果您需要更详细的帮助,请提供完整的代码和配置信息。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1621 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1546 浏览 1 评论
980 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
686 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1599 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 22:13 , Processed in 0.788846 second(s), Total 85, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号