幸运时时彩平台

STM8学习笔记---串口printf函数的实现

2020-05-18来源: eefocus关键字:STM8  串口  printf函数

幸运时时彩平台在使用单片机的时候,串口是要经常使用的功能,特别是在调试代码的过程中,经常需要使用串口打印出某些变量值,来判断程序执行流程是否正常。但是单片机默认情况下没有printf函数,如果需要使用printf函数的功能,就需要自己在串口代码中配置。下面总结一下如何在STM8单片机中使用printf函数功能。


首先按照常规方法先初始化串口


void Uart1_IO_Init( void )

{

    PD_DDR |= ( 1 << 5 );                       //输出模式 TXD

    PD_CR1 |= ( 1 << 5 );                       //推挽输出

    PD_DDR &= ~( 1 << 6 );                      //输入模式 RXD

    PD_CR1 &= ~( 1 << 6 );                      //浮空输入

}

 

//baudrate 为需要设置的波特率

void Uart1_Init( unsigned int baudrate )

{

    unsigned int baud;

    baud = 16000000 / baudrate;

    Uart1_IO_Init();

    UART1_CR1 = 0;

    UART1_CR2 = 0;

    UART1_CR3 = 0;

    UART1_BRR2 = ( unsigned char )( ( baud & 0xf000 ) >> 8 ) | ( ( unsigned char )( baud & 0x000f ) );

    UART1_BRR1 = ( ( unsigned char )( ( baud & 0x0ff0 ) >> 4 ) );

    UART1_CR2_bit.REN = 1;                      //接收使能

    UART1_CR2_bit。TEN = 1;                      //发送使能

    UART1_CR2_bit.RIEN = 1;                     //接收中断使能

}

首先设置IO口,然后设置串口相关寄存器。设置好之后串口就可以使用了,但是这时候还不能使用printf函数功能,要使用printf函数,需要重新定向putchar函数。设置代码如下:


#include "stdio。h"

 

int putchar( int ch )

{

    while( !( UART1_SR & 0X80 ) );              //循环发送,直到发送完毕

    UART1_DR = ( u8 ) ch;

    return ch;

}

将putchar添加到串口文件中,然后将函数里面的寄存器设置为串口1,添加头文件stdio.h,这时候就可以使用printf函数了。


下来再主函数中使用printf打印数据就可以了


void main( void )

{

    unsigned int i = 0;

    SysClkInit();                         

幸运时时彩平台    __asm( "sim" );                       

    LED_GPIO_Init();                      

    Uart1_Init(9600);                      

幸运时时彩平台    __asm( "rim" );                       

    LED = 0;

幸运时时彩平台    while( 1 )

    {

        LED = !LED;

        printf( "%drn", i++ );

        delay_ms( 500 );

    }

}

0。5s改变一次LED灯的状态,然后打印一个数字。串口打印效果如下:

关键字:STM8  串口  printf函数 编辑:什么鱼 引用地址:http://news.sonata9.com/mcu/ic497465.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:【飞思卡尔 MC9S12】BootLoader 上位机
下一篇:基于使用STM8单片机I2C方式实现读写操作

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8S配置位 OptionByte
 1.什么是STM8S 的配置字 OptionByte2.Option Byt Byte 里面的位都表示什么3.如何编程Option Byte一 选项字节(OptionByte )STM8S 的配置字类似于AVR 的Fuse 熔丝位。用于配置端口的复用功能和读保护等操作。不同于AVR 的熔丝位,STM8S 的时钟配置并不在Option Byte 中,不会出现写完STM8S 后芯片直接锁死的尴尬。选项字节用于配置硬件特性和存储器保护状态,这些字节位于同一页的特定存储器阵列中。选项字节可以在ICP/SWIM模式中或IAP模式中修改, 也就是可以通过STlink 写配置字,或者是通过程序写选项字。举例:STM8S 的有一个
发表于 2020-04-27
STM8S配置位 OptionByte
STM8 IAR新建寄存器工程
.2.3.4.添加头文件目录转化为相对目录5.设置输出文件目录6.设置仿真工具
发表于 2020-04-27
STM8 IAR新建寄存器工程
stm8l151低功耗程序架构,调试心得
最近帮医院做了一款体温记录仪,整个硬件方案资源是:stm8L151 + NTC*2 + EEPROM + 锂电池充电保护电路 + 18mAh纽扣电池;软件逻辑是,每隔一分钟,采样两路温度并保存在EEP里;通过USB转TTL,上位机能够读取,展示温度曲线,最大最小平均值等简单的运算;整个方案很简单,但也走了不少弯路......单片机程序框架之伪代码:void main(void){    CLK_Config();    GPIO_Config();    ADC_Config();    USART_Config();   
发表于 2020-04-27
STM8设计几点需要注意的地方
1>、STM8的PC0、PC1两个引脚输出只有OD开漏输出,没有PP输出,如下图所示:如果想要使用PC0和PC1输出高电平,硬件设计的时候需要进行上拉,这两个端口无法进行软件上拉,只能靠硬件上拉。2>、使用STM8库函数的时候,函数GPIO_ReadInputDataBit()无法读取引脚的高电平,需要对库函数做修改
发表于 2020-04-25
STM8设计几点需要注意的地方
STM8SF103----ADC采集电压值
){ u16 u16_adc1_value; Init_ADC();//初始化ADC1 while(1) { ADC1_StartConversion();//ADC开始转换      u16_adc1_value = ADC1_GetConversionValue();//保存转换值 }}
发表于 2020-04-25
STM8使用STVD开发环境问题
1、编译时出现.ubsct size overflow--http://blog.sina.com.cn/s/blog_817a5eb601018186.html----------- Project roewe - STM8 Cosmic - Configuration Debug -------------Running Linkerclnk -l"C:Program FilesCOSMICCXSTM8Lib"  -o Debugroewe.sm8 -mDebugroewe.map Debugroewe.lkf#error clnk Debugroewe.lkf:1 segment .ubsct
发表于 2020-04-25
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
幸运时时彩 福建快3 500万彩票 小米彩票代理 亿信彩票登陆 500万彩票 小米彩票官方网站 幸运时时彩平台 小米彩票代理 500万彩票手机官网