wuyu40 发表于 2025-5-12 19:59

【STM32C071RBT6测评】STM32C071RBT6使用定时器启动ADC通过DMA存储数据实验

STM32C071RBT6使用定时器启动ADC通过DMA存储数据实验
安装软件
数据表:https://www.st.com.cn/resource/en/data_brief/nucleo-c092rc.pdf
开发工具入门:https://www.st.com.cn/resource/zh/user_manual/um1727-getting-started-with-stm32-nucleo-board-software-development-tools-stmicroelectronics.pdf
STM32 的集成开发环境:https://www.st.com.cn/zh/development-tools/stm32cubeide.html
STM32Cube 初始化代码生成器(必须安装):https://www.st.com.cn/zh/development-tools/stm32cubemx.html
STM32CubeProgrammer 软件:https://www.st.com.cn/zh/development-tools/stm32cubeprog.html
要安装至少一个STM32Cube 初始化代码生成器(经过测试至少要在6.13版以上)SetupSTM32CubeMX-6.14.1-Win软件,可以使用MDK进行调试也可以使用STM32的集成开发环境(新版需要安装在win10,不兼容win7),需要安装stlink驱动。

在这个网址https://www.st.com.cn/zh/embedded-software/stm32cubec0.html下载面向STM32C0系列的STM32Cube MCU软件包(包含HAL、底层API和CMSIS、文件系统、RTOS - 以及在各类意法半导体开发板上运行的示例)

假设已经安装好 STM32CubeMX 和 STM32CubeC0 支持包。
Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32C071rbt。在pinout界面设置ADC转换,比如ADC1使用IN7,时钟保持默认状态,点击GENERATE CODE自动生成初始化代码:


ADC的启动信号和DMA设置很重要如图:

还需要设置DMA如图:

需要用time1的更新事件启动ADC,做如下设置:

在main()中添加代码:
/* 启动定时器*/
HAL_TIM_Base_Start(&htim1);
HAL_ADC_Start_DMA(&hadc1,&ADC_result,1);
/* 启动ADC和DMA的链接通道*/
当然为了方便调试需要将uint32_tadcresult;放到main()之前定义为全局变量;调试下载观察到

接线使用PA7接到一个光敏传感器,观察到转换结果,这里给出硬件接线图:

用手遮挡光线,观察到转换结果变化。

AdaMaYun 发表于 2025-6-8 21:02

使用定时器启动ADC通过DMA存储非常不错的案例

jimmhu 发表于 2025-6-10 10:55

在配置定时器时,是否需要特别注意某些参数的设置?

timfordlare 发表于 2025-6-10 14:00

在使用DMA存储数据时,如何优化数据处理速度和效率?

minzisc 发表于 2025-6-10 15:39

定时器触发ADC的具体时序关系是什么?

plsbackup 发表于 2025-6-10 18:54

如何通过错误回调函数重启ADC或保存部分有效数据?

juliestephen 发表于 2025-6-10 22:42

在使用定时器、ADC和DMA模块时,如何优化功耗管理?

sdCAD 发表于 2025-6-12 14:33

调试时发现采集的数据存在跳变,可能的原因有哪些

hearstnorman323 发表于 2025-6-12 15:00

如何避免中断处理时间过长导致下一次采样延迟?

gaochy1126 发表于 2025-6-26 16:08

STM32C071RBT6是基于哪个内核的产品?优势是什么      
页: [1]
查看完整版本: 【STM32C071RBT6测评】STM32C071RBT6使用定时器启动ADC通过DMA存储数据实验