
这是我的CubeMX配置。调用的是HAL_TIM_PWM_Start_DMA(&htim4,TIM_CHANNEL_1,(uint32_t )pulse,(176));库函数,// DMA 传输完成回调函数 void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef htim) { // __HAL_TIM_SET_COMPARE(&htim4,TIM_CHANNEL_1,0); HAL_TIM_PWM_Stop_DMA(&htim4,TIM_CHANNEL_1); } //DMA 需要传输的数据 uint16_t pulse[176] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 59,59,59,59,59,59,59,59, 29,29,29,29,29,29,29,29, 59,59,59,59,59,59,59,59, 29,29,29,29,29,29,29,29, 59,59,59,59,59,59,59,59, 29,29,29,29,29,29,29,29, 29,29,29,29,29,29,29,29, 29,29,29,29,29,29,29,29, 59,59,59,59,59,59,59,59, 29,29,29,29,29,29,29,29, 29,29,29,29,29,29,29,29, 29,29,29,29,29,29,29,29,}; 把HAL_TIM_PWM_Start_DMA()函数放在while(1)之前,示波器上看不到波形,哪位大佬可以帮忙看看 |
STM32MP135D的TIM2使用ETR作为外部时钟时,无法使用PE15作为输入
定时器使用DMA突发传输功能时,传入指针从常量数组改为变量数组后,传输功能异常。测试官方用例一样,是何原因?
分享一个PWM+DMA的BUG
STM32的TIM触发SPI的DMA发送使用NSS时MSSI的问题
使用STM32捕获PWM时同时捕获2个通道时会出现捕获的频率值不准确的问题
HRTIM 变频控制输出的第一个周期频率异常
PWM+DMA求助
怎么在不用中断的情况下,测量霍尔编码器的数据
STM32G070RET6,中断优先级配置没有效果
STM32G474 利用高精度HRTIM怎么捕获外部波形计算波形频率,想用STM32Cube配置工程代码,网上查了很多资料,没有看到这个用法。希望大神指导一下。
[md]一个问题不要重复开贴,乱的很!
我后来验证了下,基于你当前配置,你将那个DMA启动函数里的 length 14改为28即可。
至于原因,在STM32参考手册里有讲,你可以抽时间比较性地看看。
使用CubeMx进行配置的话,建议使用最新版本的。
我看你在DMA完成中断的回调函数里把DMA停掉了,后面你什么时候开启的?
当然,你不开启也可以。 不过,为了查看效果,建议回调函数里先不做STOP处理,让DMA循环跑起来,看看有无波形。
有时只输出一串波形用示波器查看时可能未必捕捉到了,何况 我看你设置的时间参数貌似也挺短的。
uint16_t test[8]={0xFF,0,0xFF,0,0xFF,0,0xFF,0,};//这是写入的数据,就写八个
这是注释掉STOP的波形
上图是打开STOP的波形
我把开启DMA传输放在了while(1)里。这应该是没传输完数据就触发了中断,给停止了吧?找不到解决的方法
上面的波形是F103PWM+DMA输出的波形,下面那个是U575输出的波形,上面的波形我经过G070进行验证了,没有任何问题,PWM的频率和周期都是一样的,uint16_t test[14]={8,8,8,8,8,8,8,8,8,8,8,8,8,8};,这是发送的数据,使用HAL_TIM_PWM_Start_DMA(&htim4,TIM_CHANNEL_1,(uint32_t *)test,14);这个函数放在了While(1)里。
在回调函数里面关闭DMA传输。 void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { HAL_TIM_PWM_Stop_DMA(&htim4,TIM_CHANNEL_1); }
我感觉还是DMA配置问题,有大佬可以看看我问题出在哪里嘛
[md]抱歉抱歉