一、实验目的
- 熟悉开发环境
- 在开发板上读取电压和温度信息
- 使用串口和PC通信在PC上输出当前电压和温度信息
二、实验环境
硬件:STM32开发板、CMSIS-DAP调试工具
软件:STM32CubeMX软件、ARM的IDE:Keil C51
三、实验内容
- 配置相关硬件设施
(1)电压配置:因为电源 ADC 引脚为 PF10,使用 ADC3 的通道 8,原理图如图所示,而stm32 内部 的 1.2V 校准电压 Vrefint 在 ADC1 中,如图1所示。

图 1
在 cubeMX 中开启 ADC1,在设置中将 Vrefint Channel 勾选,用于读取内部参考电压。
ADC 在 cubeMX 中的设置如图采样频率设置为 PCLK2/4,采样位数为 12 位,数据设
置为右对齐,其余均保持默认。在 cubeMX 中开启 ADC3,并打开其 IN8 用于电池电 压的读取,其设置和 ADC1 一致。
(2)串口配置:在 Connectivity 标签页下将 USART1 打开,将其 Mode 设置为 Asynchronous 异步通讯方式。接着将其波特率设置为 115200,数据帧设置为 8 位数据位,无校验位,1 位停止位。同样地,打开 USART6,将其以和 USART1 同样的方式进行设置。接着前往NVIC 标签页下,开启 USART1 和 USART6 的中断。
2.实验代码
(1)通过uint32_t Read_ADC(ADC_HandleTypeDef* hadc)函数来读取ADC值,获取模拟信号的数字化表示,如图2所示。
(2)通过float Convert_ADC_To_Voltage(uint32_t adc_value)函数和float Convert_Voltage_To_ Temperature(float voltage)函数从ADC获取电压和温度数据,如图2所示。
(3)在main函数的while循环中读取ADC值并通过串口发送数据,如图3所示。

图 2

图 3
3.实验结果
打开串口调试助手,选择usb串行设备,设置波特率为115200,并点击"打开串口"操作,运行程序后可以看到在窗口中接收到电压和温度信息,如图4所示,可以看到打印的电压是1.23V,打印的温度是29.41,根据打印出的数据可以看到温度在实时发生变化。

图 4
四 、 实验小 结
1.实验中出现的问题
(1)在实验中发现,开发板的六号接口(&huart6)可以正常输出,一号(&huart1)不能输出结果,所以运行后,在串口调试助手中显示的是六号接口的数据,如图5所示。

图 5
(2)运行程序时出现错误无法输出数据,修改配置顺序按图6所示

图 6
2.总结与体会
本次实验通过串口打印电压和温度数据,实现STM32的串口通信。串口是嵌入式中非常重要的一个外设。将串口作为调试接口,把开发板的调试信息打印到PC端的串口助手,可以极大地方便调试工作。