#申请原创# STM32C092使用定时器启动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”,选择芯片型号,STM32C092rct。在pinout界面设置ADC转换,比如ADC1使用IN1,对应引脚为PA1,时钟保持默认状态。
ADC的启动信号和DMA设置很重要,需要使用定时器启动ADC转换如图:
还需要设置DMA如图:
需要用time1的更新事件启动ADC,完成周期等基本设置再做如下设置:
初始化任务由CUBEMX自动完成:
在main()中添加代码:
/* 启动定时器*/
HAL_TIM_Base_Start(&htim1);
HAL_ADC_Start_DMA(&hadc1,&ADC_result,1);
/* 启动ADC和DMA的链接通道*/
当然为了方便调试需要将uint32_t ADC_result;放到main()之前定义为全局变量;调试下载观察到
接线使用PA7接到一个光敏传感器,观察到转换结果,这里给出硬件接线图:
用手遮挡光线,观察到转换结果变化。使用stm studio软件观察ADC波形:
当光源在光传感器附近时观察波形如图:
|