马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
媒介
本文采取开辟板为STM32L475VET6(潘多拉开辟板),使用RT_Thread Studio基于芯片开辟模式,完成ADC实行,实现对板载3.3v和GND电压收罗
一、板载资源
使用引出I/O口PC2,对应ADC1的通道一
二、详细步调
1.打开CubeMX举行设置
1.1 使用外部高速时钟,并修改时钟树
1.2 打开ADC1的通道3,并设置为一连收罗模式(ADC根据本身需求调解)
1.3 打开串口
1.4 天生工程
2. 设置ADC
官方设置步调
2.1 打开ADC驱动
在RT-Thread Setting的组件栏中
2.2 声明ADC
2.3 剪切stm32l4xx_hal_msp.c中的HAL_ADC_MspInit函数至board.c
2.4 使能ADC(一样平常默认打开)
3. 打开libc
4.编译,烧录
将PC2毗连至开辟板3.3V的I/O口
- #include <rtthread.h>
- #define DBG_TAG "main"
- #define DBG_LVL DBG_LOG
- #include <rtdbg.h>
- /*
- * 程序清单: ADC 设备使用例程
- * 例程导出了 adc_sample 命令到控制终端
- * 命令调用格式:adc_sample
- * 程序功能:通过 ADC 设备采样电压值并转换为数值。
- * 示例代码参考电压为3.3V,转换位数为12位。
- */
- #include <rtthread.h>
- #include <rtdevice.h>
- #define ADC_DEV_NAME "adc1" /* ADC 设备名称 */
- #define ADC_DEV_CHANNEL 3 /* ADC 通道 */
- #define REFER_VOLTAGE 330 /* 参考电压 3.3V,数据精度乘以100保留2位小数*/
- #define CONVERT_BITS (1 << 12) /* 转换位数为12位 */
- static int adc_vol_sample(int argc, char *argv[])
- {
- rt_adc_device_t adc_dev;
- rt_uint32_t value, vol;
- rt_err_t ret = RT_EOK;
- /* 查找设备 */
- adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
- if (adc_dev == RT_NULL)
- {
- rt_kprintf("adc sample run failed! can't find %s device!\n", ADC_DEV_NAME);
- return RT_ERROR;
- }
- /* 使能设备 */
- ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
- /* 读取采样值 */
- value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
- rt_kprintf("the value is :%d \n", value);
- /* 转换为对应电压值 */
- vol = value * REFER_VOLTAGE / CONVERT_BITS;
- rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);
- /* 关闭通道 */
- ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);
- return ret;
- }
- /* 导出到 msh 命令列表中 */
- MSH_CMD_EXPORT(adc_vol_sample, adc voltage convert sample);
- int main(void)
- {
- return RT_EOK;
- }
复制代码
|