這里我們以STM8L15x系列單片機使用ADC內部參考電壓測量VDD電壓并將電壓值value通過窗口打印為例編寫程序,(STM8L使用ADC內部參考電壓通道測量VDD電壓)
usart.h頭文件:
#ifndef _usart_H
#define _usart_H
#include “stm8l15x.h”
void Usart_Init(void);
#endif
usart.c源文件:
#include “usart.h”
void Usart_Init(void)
{
CLK_PeripheralClockConfig (CLK_Peripheral_USART1,ENABLE); //開啟USART1時鐘
USART_Init(USART1,9600,USART_WordLength_8b,USART_StopBits_1,USART_Parity_No,USART_Mode_Tx); //USART初始化,波特率9600,8位數據長度,1位停止位,無校驗位,發送模式
USART_Cmd (USART1,ENABLE);//使能USART1
}
#include “stm8l15x.h”
#include “adc.h”
#include “usart.h”
#include “stdio.h”
int putchar(int data)
{
USART_SendData8(USART1,(u8)data); //發送8位數據
while(!USART_GetFlagStatus (USART1,USART_FLAG_TXE));//等待發送完畢
return data;
}
int main( void )
{
u16 adc1_value=0;
float value=0;
Adc_Init();
Usart_Init();
while(1)
{
ADC_SoftwareStartConv(ADC1); //開啟軟件轉換
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//等待轉換結束
ADC_ClearFlag(ADC1,ADC_FLAG_EOC);//清除對應標志
adc1_value=ADC_GetConversionValue(ADC1); //獲取轉換值
value=1.225*4096/adc1_value; //單位V
printf(“ad=%fV ”,value);
}
}
IAR用printf輸出與keil設置不太一樣,首先當然先要包含頭文件“stdio.h”,然后改寫putchar函數
在IAR開發環境中進行如下配置:
(1)右擊Demo-Debug選擇opTIon
(2)在OpTIons中將Library ConfiguraTIon改成Full
(3)在Library OpTIons中將Printf formatter改成Large即可
(4)完成上述設置后編譯整個工程,然后下載程序到STM8L15x板子中并進入到Debug調試環境中,點擊View-》Terminal I/O調出虛擬終端,然后全部運行,就可以在Terminal窗口中看到打印信息。
-
單片機
+關注
關注
6037文章
44558瀏覽量
635354 -
STM8L15X
+關注
關注
1文章
7瀏覽量
9144
原文標題:基于STM8L15x單片機的串口printf輸出
文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論