rtthread PWM+ADC+DMA配置过程中遇到的问题

背景

项目开发的其中一个需求是采集8个电机的反馈电压,使用示波器观察pwm高电平的时候电压数据比较稳定可靠,所以要在上升沿的时候进行采集。
主控芯片使用的是stm32f407,rtthread底层还是调用的是hal库所以使用cubxmx先生成代码,先在kile上跑通在向rtthread移植。

Cubemx 配置

pwm

使用定时器1的通道1触发adc转换配置如下

时钟配置

这里因为TIM1是在APB2总线上等下配置pwm的时候要用到
在这里插入图片描述
在这里插入图片描述
这里选着的是TIM1的channel 1所以trigger event selection 选着 output compare(OC1REF)
使用的是TIM1
Freq = CK_PSC / (PSC + 1) / (ARR + 1)
144 000 000 / 6 / 1000 = 24 000 频率为24khz
一般的电机频率不会低于20khz低于20khz电机会发出声音。

DMA

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其中比较难理解的是这个 Number Of Discontinuous Conversions 下面的解释是不连续转换的数量是1~8之间,意思比较容易理解但是没有交代清楚,是A通道转换8次后再去转换B通道8次还是adcdefg转换后在重复abcdefg 8次。经过查看手册是adcdefg8次。
在这里插入图片描述
在这里插入图片描述
这里一开始DMA应该是disable要点到配置DAM才行。
到这就结束了。生成代码就行,下面看代码部分。

代码

在这里插入图片描述
开始转换pwm给触发信号
在这里插入图片描述
开始adc转换
在这里插入图片描述
在这里插入图片描述
基本就没啥问题了。
在这里插入图片描述
下面开始移植把
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

把pwm adc dma函数移到rtthread board.c 其中这个中断函数也要移进去,这个中断是ADC转换完成让DMA干活的中断。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值