完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
配置多通道最好使用DMA,
启动DMA同时就是启动多通道采集。你配置好工程后会自动配置通道的 HAL_ADC_Start_DMA(&hadc,ADC_ConvertedValue,2) 这里面ADC_ConvertedValue是一个数组,后面的2代表两通道,是你自己定义的。 HAL_ADC_ConvCpltCallback里面要注意,可以按照楼上给的示例做测试(我在测试时里面如果没有配置好就会死在DMA中断里)。 另外你说的回自动清除你写的代码,要注意在 以下位置写入(以main中的USER CODE BEGIN 3为例), /* USER CODE BEGIN 3 */ 。 。 。 /* USER CODE END 3 */ 还有,做开发心态很重要,抱怨HAL库的时候多想想实现原理,你会有更多收获。
最佳答案
|
|
|
|
|
|
|
|
L0的设置界面
|
|
|
|
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* AdcHandle)
{ /* Get the converted value of regular channel */ uwADCxConvertedValue = HAL_ADC_GetValue(AdcHandle); HAL_ADC_Stop_IT(&hadc); if(CH_dp==0) { CH_dp=1; ADC1->CHSELR = ADC_CHANNEL_2; } else { CH_dp=0; ADC1->CHSELR = ADC_CHANNEL_7; } HAL_ADC_Start_IT(&hadc); HAL_UART_Transmit_IT(&huart1, (uint8_t*)uwADCxConvertedValue, 4); } |
|
|
|
看你是开了DMA 了,你开几个ADC通道 Cube会自动配置通道的。。。无需再设置。。和F0的一样。。。
|
|
|
|
在哪里打开几个ADC通道?我只能看到配置几个通道的ADC输入引脚。其他不知道在哪里配置多通道,我试了实际生成的ADC初始化里只配置了最后的通道,而且没有加校准程序和用户代码区,想自己加程序每次重新生成又会清掉自己写的代码,Cube MX越用越郁闷。 |
|
|
|
lulfu826 发表于 2018-8-20 09:11 拷贝出来单独管理 |
|
|
|
帮顶一下
|
|
|
|
看来只有这个笨办法了,这样做也有很大风险,替换来替换去,最后要是最后编译的都是残缺的文件没有被发现就麻烦了。 |
|
|
|
|
|
|
|
代码管理问题,要不用SVN或者啥的代码管理工具。这样就能找回代码了。 另外说一句,CubeMX创建的工程的确很不错,仅仅作为创建代码,要作为项目代码还得另外加管理。 |
|
|
|
你做好了吗,我也遇到这个问题
|
|
|
|
void HAL_ADC_ConvCpltCallback
|
|
|
|
楼主问题是怎么解决的,能方便给个答案吗?!
|
|
|
|
没有解决。
|
|
|
|
asd009 发表于 2018-8-20 11:17 在STM32F系列ADC采用DMA好像可以这样配置,STM32L051好像没法配置多通道,你可以试试,不知道是不是我的软件版本没跟上; 你说的在: /* USER CODE BEGIN 3 */ 。 。 。 /* USER CODE END 3 */内写函数,当然是写这里的,你觉得会犯这么低级的错误吗? 我说的删除用户程序可不是这里而是连用户写的xxxx.c文件整个删除,那才真正让人抓狂。 |
|
|
|
lulfu826 发表于 2018-8-20 11:34 本帖最后由 稀饭放姜 于 2017-3-3 16:06 编辑 怎么可能删除用户写的程序,你写的程序要单独放到一个文件夹里的,为什么要和cubemx的代码混合呢? CUBEMX的逻辑就是利用HAL库和中间件隔离你对底层的操作。你使用STMCU的所有资源基本上都在自带的src和inc目录里的文件操作。这些是ST提供的外设配置环境。 你要写的功能肯定都是控制逻辑和算法之类,这些肯定是单独建一个目录,这样才是松耦合。你如何配置都不会删除你额外的文件的。 网上很多公司出的HAL库的使用方法,都是标准库的思想,如果用这种思想去使用HAL库,会累死人的。 |
|
|
|
兄弟,你用过F0吗?F0是自动配置通道的?那它扫描的方式是在Scan Conversion Mode里设置的那样,Forward或者Backward吗?这意思就是我不用手动配置Rank的前后顺序了吗? |
|
|
|
asd009 发表于 2018-8-20 11:17 兄弟,你说的这个2代表两通道貌似是不是有点问题啊,我看了一下函数定义,2就是Length的实参,官方的解释原文是The length of data to be transferred from ADC peripheral to memory,貌似不是代表2通道啊 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2078 浏览 0 评论
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
1216 浏览 0 评论
2837 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2600 浏览 3 评论
5284 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-13 23:20 , Processed in 0.943021 second(s), Total 78, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号