之————05 ADC测芯片温度+串口输出
时间:10-02
整理:3721RD
点击:
上一次做了串口通信,这些在串口通信上增加ADC测量芯片温度。一开始用错了计算公式,计算的数据不对。先上一下结果图。
![](../imgqa/ele/mcu/mcu-3721rd.com-27691egop3ofv02d.jpg)
一、首先开F412芯片IN0-15共16路外部通道,可以进行16路外部转换,同时还有IN16内部温度通道、IN17内部参考电压通道、IN18电池充电监测通道(其中IN16与IN18为选其一的关系) 。
![](../imgqa/ele/mcu/mcu-3721rd.com-27692ikajevam5e3.jpg)
![](../imgqa/ele/mcu/mcu-3721rd.com-27693acq1kh5dau2.jpg)
![](../imgqa/ele/mcu/mcu-3721rd.com-27694lzbvra1be1l.jpg)
//Vsense为采样数据转化成的电压 Vsense=MCU_Temperature_ConvertedValue*3.3/4096
//计算公式 温度(度)={(Vsense-V25)/Avg_Slope}+25
二、前面进行过串口测试 【NUCLEO-F412ZG试用体验】之---04串口通信测试
三、进行ADC配置,如下图只打开温度传感器通道,并设置好初始化,并生成工程。
![](../imgqa/ele/mcu/mcu-3721rd.com-27695i2bkmrh05pw.jpg)
四、编程
![](../imgqa/ele/mcu/mcu-3721rd.com-27696a00z1mp4pbr.jpg)
![](../imgqa/ele/mcu/mcu-3721rd.com-27697fkz3v5shmqj.jpg)
五、由于本次采用printf函数串口进行输出。
5.1 须要增加 #include <stdio.h>头文件。
5.2 只增加头文件运行会进入死循环。
5.3 printf执行时每个字符会调用int fputc(int ch, FILE *f),所以只要将fputc进行重定义。记字符一个个输出去。
int fputc(int ch, FILE *f)
{
uint8_t ch1[1];
ch1[0]=ch;
HAL_UART_Transmit(&huart6,ch1,1,10); //将传过来的字符发送出去
while (!(&huart6.Instance ->SR && UART_FLAG_TXE));
return ch;
}
六、输出结果就如前述了。
小编厉害啊,多向你学习学习啊