ⅰ
adc2如何使用dma功能
上一篇文章说了关于adc使用dma的功能,单adc(只使用adc1,或者只使用adc2)采集多条通道,可以使用规则多利用dma功能实现。
但是,只有adc1和adc3拥有dma功能,而adc2没有dma功能,如何实现使用dma功能采集数据呢?
这个问题大家不必担心,st这么大的公司,这种基本的功能,肯定是有办法解决的。
其实这问题在参考手册中都能找到答案。答案简单概括就是:使用双adc模式,由adc2转化的数据可以通过双adc模式,利用adc1的dma功能传输。
在有2个或以上adc模块的产品中,可以使用双adc模式。在双adc模式里,根据adc1_cr1寄存器中ualmod[2:0]位所选的模式,转换的启动可以是adc1主和adc2从的交替触发或同步触发。
stm21f1的adc2转换的结果也是保存在adc_dr寄存器中,这种是在双模式下(像f4还有三重模式)。
假如上一篇文章的采集通道换成如下顺序:adc2的通道3、adc1的通道8、adc2的通道2,则需要软件配置:
adc_regularchannelconfig(adc2,adc_channel_3, 1, adc_sampletime_55cycles5);
adc_regularchannelconfig(adc1,adc_channel_8, 2, adc_sampletime_55cycles5);
adc_regularchannelconfig(adc2,adc_channel_2, 3, adc_sampletime_55cycles5);
说到这里,相信都应该明白了吧。
ⅱ
usart过载错误overrun error
这一节内容,也有点算是网友问的问题,只是问的方式不同,也算是一个问题点吧。
这个问题的来源就是:频繁的接收uart数据,没有及时的读取usart_dr中的数据,使其会发生过载错误。
这种情况一般是发生在我们不使用中断接收uart数据,在某些rtos中,我们使用getchar来读取数据,但由于有更高优先级任务打断了接收的任务,而这个时候uart又有许多数据发过来,这时,过载错误就会发生了。
而过载错误就会导致接收的数据异常,这个时候,解决的办法很简单:通过读取usart_sr,再读取usart_dr即可清除。
这个时候也可以使用过载错误中断,但是,配置的时候需要注意软件的配置:usart_itconfig(usart1,usart_it_err, enable);而有的人配置成:usart_it_ore.
usart_it_ore这个确实存在,但不能使用在这里,usart_itconfig这个函数明确要求了配置的参数。这个用于处理中断判断标志:if(usart_getitstatus(usart1,usart_it_ore) != reset)
好了,今天就讲述上面两点,希望对你们有所帮助。
出售Agilent/HP8158B光衰减器
摩尔线程联合埃舍尔打造三七数字孪生全产业链平台
电动汽车的百公里加速和动力电池有关系吗
细数未来国内移动医疗十大创业趋势
LECTOR系列读码器在汽车零部件上进行DPM条码识别的应用解析
STM32F1的ADC2如何使用DMA功能 USART过载错误Overrun error
NSA网络服务助手 提供远程接口配件 AEM汽车以太网服务
早期的屏幕指纹和最新的屏幕指纹方案存在哪些差异
变压器接地电阻柜与消弧线圈有什么区别
荣耀V40售价被渠道商曝光,顶尖配置或定价3999元
普宙发声2019光伏变革论坛,热成像助力光伏电站精细化运维
如何让智能音箱成为未来全屋智能中的必需品
Hi-Fi功率放大器电路(有BOM)
一个简单的100W逆变器电路
教大家怎么选择神经网络的超参数
Teledyne e2v推出新款500万像素规格传感器 采用小巧的有机扇出型封装
利用Xilinx FPGA 集成的万兆MAC IP 核以及XAUI IP 核实现FPGA 片间可靠通信设计
创建SQlite的方法
自从外汇管制力度加大之后,比特币价格就直线上升,“疯狂”的比特币,博傻还能持续多久
三极管的常用特性参数及工作模式