Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ADC
RT-Thread Studio
RT-Thread Studio 生成STM32H7项目时ADC配置错误
发布于 2023-07-31 00:12:06 浏览:643
订阅该版
[tocm] # 在使用RT-Thread Studio 生成STM32H7项目时ADC配置错误 ## 生成的adc_config.h中的ADC_CONFIG结构体不是H7的 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230730/ef3e137c2a5b7caa7dc24008724b1c58.png.webp) ### 生成的代码是 ```c #define ADC1_CONFIG \ { \ .Instance = ADC1, \ .Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4, \ .Init.Resolution = ADC_RESOLUTION_12B, \ .Init.DataAlign = ADC_DATAALIGN_RIGHT, \ .Init.ScanConvMode = DISABLE, \ .Init.EOCSelection = DISABLE, \ .Init.ContinuousConvMode = DISABLE, \ .Init.NbrOfConversion = 1, \ .Init.DiscontinuousConvMode = DISABLE, \ .Init.NbrOfDiscConversion = 0, \ .Init.ExternalTrigConv = ADC_SOFTWARE_START, \ .Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE, \ .Init.DMAContinuousRequests = DISABLE, \ } ``` ### 而正确的h7的adc_config.h应该是 ![screenshot_96a06dfab623d60a4b46c88e1f6f125e.png](https://oss-club.rt-thread.org/uploads/20230730/96a06dfab623d60a4b46c88e1f6f125e.png.webp) ### 正确代码 ```c #define ADC1_CONFIG \ { \ .Instance = ADC1, \ .Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4, \ .Init.Resolution = ADC_RESOLUTION_16B, \ .Init.ScanConvMode = ADC_SCAN_DISABLE, \ .Init.EOCSelection = ADC_EOC_SINGLE_CONV, \ .Init.LowPowerAutoWait = DISABLE, \ .Init.ContinuousConvMode = DISABLE, \ .Init.NbrOfConversion = 1, \ .Init.DiscontinuousConvMode = DISABLE, \ .Init.NbrOfDiscConversion = 1, \ .Init.ExternalTrigConv = ADC_SOFTWARE_START, \ .Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE, \ .Init.ConversionDataManagement = ADC_CONVERSIONDATA_DR, \ .Init.Overrun = ADC_OVR_DATA_OVERWRITTEN, \ .Init.OversamplingMode = DISABLE, \ } ``` ## 我测试了一些情况 - RT-Thread Studio 生成STM32H753IITx芯片工程
生成代码错误
- RT-Thread Studio 生成STM32H743AGIx芯片工程
生成代码错误
- RT-Thread Studio 生成STM32H743-ATK-APOLLO开发板工程 BSP:1.0.2 RT-Thread:4.1.0
生成代码错误
- ENV工具在RT-Thread 4.1.1源码中在BSP stm32h743-atk-apollo 中 scons --dist生成工程中
生成代码正确
## 生成的库问题 不仅仅是adc_config.h问题,在drv_adc.c中 生成的代码是 ```c static rt_err_t stm32_adc_enabled(struct rt_adc_device *device, rt_uint32_t channel, rt_bool_t enabled) { ADC_HandleTypeDef *stm32_adc_handler; RT_ASSERT(device != RT_NULL); stm32_adc_handler = device->parent.user_data; if (enabled) { #if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) ADC_Enable(stm32_adc_handler); #else __HAL_ADC_ENABLE(stm32_adc_handler); #endif } else { #if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) ADC_Disable(stm32_adc_handler); #else __HAL_ADC_DISABLE(stm32_adc_handler); #endif } return RT_EOK; } ``` 而正确的应该是 ```c static rt_err_t stm32_adc_enabled(struct rt_adc_device *device, rt_uint32_t channel, rt_bool_t enabled) { ADC_HandleTypeDef *stm32_adc_handler; RT_ASSERT(device != RT_NULL); stm32_adc_handler = device->parent.user_data; if (enabled) { #if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined (SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32H7) || defined (SOC_SERIES_STM32WB) ADC_Enable(stm32_adc_handler); #else __HAL_ADC_ENABLE(stm32_adc_handler); #endif } else { #if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined (SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32H7) || defined (SOC_SERIES_STM32WB) ADC_Disable(stm32_adc_handler); #else __HAL_ADC_DISABLE(stm32_adc_handler); #endif } return RT_EOK; } ``` 修改了这些后才编译通过 ### 这个 studio 生成的工程问题很大,我目前只测试adc就遇到了这些问题,其他功能没有测试,没有启用,估计也是有错的. 希望官方早点修复,非常影响使用!
查看更多
3
个回答
默认排序
按发布时间排序
yangjie
认证专家
2023-08-01
hello
bsp 包更新了1.1.0,试试(注:芯片包还未更新) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230801/233fb9335901b108def0ecfc5635a223.png)
张世争
2023-07-31
学以致用
工程构建脚本处理一下,使用 `scons --target=eclipse` 重新生成工程, studio 就是个IDE,
MartinHeidegger
2024-12-17
健健康康,平平安安
一年了,RT-Thread上的芯片支持包还是没有更新,遇到同样的问题,最后解决办法是,在git上面把正确的内容复制更换了ADC的驱动,采用的是ART-Pi的代码 drv_adc.c https://gitee.com/mirrors/ART-Pi/blob/master/libraries/drivers/drv_adc.c adc_config.h https://gitee.com/mirrors/ART-Pi/blob/master/libraries/drivers/include/config/adc_config.h
撰写答案
登录
注册新账号
关注者
0
被浏览
643
关于作者
YeRuoyu
这家伙很懒,什么也没写!
提问
1
回答
0
被采纳
0
关注TA
发私信
相关问题
1
请大神帮忙看下风格 还是哪里有问题 照着串口驱动写的ADC驱动
2
ADC config
3
rt_thread_delay()和ADC采样之间的冲突
4
请教在官方BSP中的STM32F40X程序中加入ADC,串口没输出。
5
给RT-Thread添加ADC驱动框架
6
求助:ADC采样被干扰
7
【内核和外设学习营】十里 ADC光敏电阻电压采集实验
8
<内核学习营>+坦然+探索者stm32f407板子的ADC测试光传感器实验
9
【内核学习营】+青春+ADC读取光敏传感器实验
10
《内核学习营》+水一方+项目中应用的ADC实现电压采集
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
在RT-Thread Studio中构建前执行python命令
2
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
3
CherryUSB开发笔记(一):FSDEV USB IP核的 HID Remote WakeUp (USB HID 远程唤醒) 2025-01-18 V1.1
4
RT-thread 缩写字典
5
RT Thread 源码分析笔记 :线程和调度器
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
聚散无由
2
篇文章
14
次点赞
catcatbing
2
篇文章
4
次点赞
Wade
2
篇文章
2
次点赞
Ghost_Girls
1
篇文章
5
次点赞
xiaorui
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部