IAR开发环境使用串口printf输出(基于STM8L15x系列单片机)

来源:互联网 发布:宿迁12345网络问政电话 编辑:程序博客网 时间:2024/06/12 06:32

这里我们以STM8L15x系列单片机使用ADC内部参考电压测量VDD电压并将电压值value通过窗口打印为例编写程序,相关的adc配置可参见另一篇博客http://blog.csdn.net/m0_37973607/article/details/77141756(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\r\n",value);   

    }
}

IAR用printf输出与keil设置不太一样,首先当然先要包含头文件"stdio.h",然后改写putchar函数

在IAR开发环境中进行如下配置:

(1)右击Demo-Debug选择option


(2)在Options中将Library Configuration改成Full

IAR <wbr>STM8串口printf输出

(3)在Library Options中将Printf formatter改成Large即可

IAR <wbr>STM8串口printf输出

(4)完成上述设置后编译整个工程,然后下载程序到STM8L15x板子中并进入到Debug调试环境中,点击View->Terminal I/O调出虚拟终端,然后全部运行,就可以在Terminal窗口中看到打印信息



阅读全文
0 0
原创粉丝点击