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

发布者:chenfengy818最新更新时间: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函数 引用地址:STM8学习笔记---串口printf函数的实现

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

推荐阅读最新更新时间:2024-11-13 04:28

STM8 IAR相关笔记
如果.h文件不在程序根目录下,需要说明位置,如下图: 这样编译器就能找到.h文件的位置,不会出错。至于.c文件直接位置添加即可,如下图
[单片机]
基于C8051F410的串口通信实验
这段程序功能很简单,就是按一个按键就发送特定命令,收到命令就控制灯的亮灭,但却很有调试价值,曾帮科协的一个同学调通了C8051F410和avr的通信,还有自己的一些项目用到它。故上传上来给大家参考下。 #include c8051f410.h // SFR declarations #include stdio.h #define SYSCLK 24500000 // Internal oscillator frequency in Hz #define BAUDRATE 2400 // Baud rate of UART in bps sbit led1 = P2^1;
[单片机]
轻松学PIC之RS232串口通信篇
大家好, 通过前一期的学习, 我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有所了解与熟悉,学会了如何用单片机来控制发光管、继电器、蜂鸣器、按键、数码管等资源,体会到了学习板的易用性与易学性,看了前几期实例,大部分都是基于单片机端口操作原理呢?   大家是否觉得这样一个单片机系统似乎缺少点什么呢?不错,本期我们将介绍单片机与电脑通讯,使单片机与PC 机能够联机工作。   单片机除了需要控制外围器件完成特定的功能外,在很多应用中还要完成单片机和单片机之间、单片机和外围器件之间,以及单片机和微机之间的数据交换和指令的传输,这就是单片机的通信。单片机的通信方式可以分为并行通信和串行通信。并行方式传送一个字
[单片机]
轻松学PIC之RS232<font color='red'>串口</font>通信篇
关于串口工作方式
单片机89C51的串行端口有4种工作方式,通过编程设计,可以使其工作在任一方式,以满足不同场合的需要。其中, 方式0主要用于外接移位寄存器,以扩展单片机的I/O电路; 方式1主要用于双机之间或外设电路的通信; 方式2、3除有方式1的功能外,还可用作多机通信,以构成多微机系统,方式2、3的区别在于波特率的不同。   单片机的串行通信的波特率可以程控设定,在不同的工作方式下,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定。 单片机的串行端口有2个控制寄存器,用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率以及中断标志TI和RI。单片机的串行端口有1个数据寄存器SBUF,该寄存器为发送和接收所共有,在一定条件
[单片机]
关于<font color='red'>串口</font>工作方式
STM8单片机STVD环境工程设置
1.项目的通用属性如下图如示。要注意编译器的路径。
[单片机]
STM8 ADC转换模式-------单次扫描模式
STM8单片机ADC支持5种转换模式:单次模式,连续模式,带缓存的连续模式,单次扫描模式,连续扫描模式。 单次扫描模式 该模式是用来转换从AIN0到 之间的一连串模拟通道,‘n’是在 ADC_CSR寄存器的换的通道编号。CONT 位以被清零时通过置位 ADON 位来启动。 注意:当使用扫描模式时,不可以将 AIN0 到 AINn 之间通道对应的 I/O 口设为输出状态,因为 ADC 的多路选择器已经将这些 I/O 口的输出模块禁用了。 对于单次扫描模式,转换是从AIN0通道开始的,而且结果数据被存储在数据缓冲寄存器ADC_DBxR 中,当最后一个通道(通道‘n’)被转换完成后,EOC(转换结束)标志被置位,当EOC
[单片机]
STM8 SPI的学习
#define SPI_CS_PORT GPIOC #define SPI_CS_PIN GPIO_PIN_4 #define SPI_CLK_PORT GPIOC #define SPI_CLK_PIN GPIO_PIN_5 #define SPI_MOSI_PORT GPIOC #define SPI_MOSI_PIN GPIO_PIN_6 #define SPI_MISO_PORT GPIOC #define SPI_MISO_PIN GPIO_PIN_7 SPI是串行设备接口(Serial Peripheral Interface)的英文缩写,是一种单主多从式的全双工同步串行通信协议。 SCK:同步时钟信号线
[单片机]
14. 串口控制台建立
串口控制台建立这一节的主要有三个内容: 1.控制台框架搭建 1.1控制台的分类介绍: 1.1.1菜单型控制台:就是选中设置好的数字或者字母选项后执行相应功能的控制台: 例如刚进入uboot之后的界面,就是菜单型控制台: 等待我们输入命令,来执行相应的操作。例如上面,如果此时我们输入1,就是进行Format the nand Flash的操作: 1.1.2解析型控制台:在上面的菜单型控制台里,选择5:Exit to command line:后会出现: 就进入了解析型控制台: 我们输入help后,控制台会去解析这一命令是不是该控制台所支持的,如果是,它会去调用相应的help函数来运行。会列出这个uboot
[单片机]
14. <font color='red'>串口</font>控制台建立
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved