对于没有仿真器的板子来说,串口是一个非常好的调试工具,你可以将你需要观察的变量
通过串口发送到PC上进行后续分析,进行调试。这里主要介绍在Keil C中怎么使用串口来
调试程序。
程序代码如下:
#include
#include
void serial_init(void);
void main()
{
serial_init();
while(1)
{
printf("Hello,Serial Port\n";
}
}
void serial_init(void) //串口初始化函数
{
TMOD = 0x20; //T1工作方式1,用于设定波特率
TH1 = 0xF3; //波特率4800Bps,12MHz晶振
TL1 = 0xF3;
PCON |= 0x80; //SMOD = 1,波特率加倍
SCON = 0x50; //允许发送接收
ES = 0; //禁止串口中断
TI = 1;
TR1 = 1;
}
需要注意的是单片机晶振是12MHz(否则波特率设置将不正确)。
建立工程,编译,进入调试界面,选择菜单里的"Peripheraals"-"Serial"项,看到的是串口设置的
界面,可以看到,在未进行串口初始化之前,串口的参数都是0x00,其他选项也没有置位。
按 F10进入单步调试,执行serial_init函数,我们看到串口已经初始化好,波特率为4806。串口初始化好之后,我们就可以使用printf函数 输出自己需要的信息了(注意需要有stdio.h文件)。这里,我们只输出了简单的字符串信息示例。选择菜单"View"-“Serial Window #1”,可以看到空白的
区域,这是串口信息显示的地方,执行printf函数,可以看到在屏幕上打印出了“Hello,Serial Port”字样。
在实际硬件上调试程序过程中,我们在遇到问题时候可以通过这种方式观察相关变量的值,调试程序,程序没问题之后就可以将printf函数去掉了。
关键字:串行通讯 printf函数
引用地址:
串行通讯——使用printf函数
推荐阅读最新更新时间:2024-03-16 15:21
串行通讯到以太网多路转换的实现
1 引言 某装置有4台光导液位二次表,根据工艺要求,需要把二次表显示改造为DCS监视。光导液位二次表只能输出RS-485的串行信号,监视操作站要求能同时进行监视。因此本系统的技术实质是实现多路串行通讯到多路以太网通讯的转换。 2 设计方案 2.1 简单方案 串行通讯(无论是RS-232还是RS-485)只是点对点的通讯,因此可以将4台光导液位二次表接入一台操作服务器上,另三台操作客户机从操作服务器取数据。这样就能满足上述要求,如图1所示。 图1 服务器-客户机模式方案结构示意 但是,出于安全性考虑,操作服务器明显成为系统的瓶颈,一旦出现服务器故障将造成系统瘫痪,这是工艺不能允许的。因此,
[工业控制]
STM32 printf函数的调用
stm32中调用 printf()函数,实质上添加对应的 int fputc(int ch, FILE *f) 函数 (如 fputc对应目标是串口则printf输在串口上,如 fputc对应目标是LCD则是输在LCD) 具体步骤如下: 1、 首先要在main文件中包含 stdio.h (标准输入输出头文件) 2、在main文件中重定义函数 //加入以下代码,支持printf函数,而不需要选择use MicroLIB #if 1 #pragma import(__use_no_semihosting) //标准库需要的支持函数 struct __FILE { int handle; }; FILE __stdou
[单片机]
【STM32Cube_09】重定向printf函数到串口输出的多种方法
本文详细的介绍了如何重定向printf输出到串口输出的多种方法,包括调用MDK微库(MicroLib)的方法,调用标准库的方法,以及适用于 GNUC 系列编译器的方法。 1.printf与fputc 对于 printf 函数相信大家都不陌生,第一个C语言程序就是使用 printf 函数在屏幕上的控制台打印出Hello World,之后使用 printf 函数输出各种类型的数据,使用格式控制输出各种长度的字符,甚至输出各种各样的图案。 除此之外,在程序出错的时候,懒得调试,直接简单粗暴的加个 printf 找bug,有时候也不失为一种有效的方法。 对于已经习惯的 printf 函数,你了解多少呢? printf 定义在
[单片机]
RS232是什么?
目前,RS232是什么?在当代的应用可谓是越来越广泛,RS232是什么?是值得我们好好学习的,现在我们就深入了解RS232是什么? RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是 “数据终端 设备 (DTE)和数据通讯 设备 (DCE)之间串行二进制数据交换接口技术标准”。 该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。随着设备的不断改进,出现了代替 DB25的DB9接口,现在都把RS232接口叫做DB9。
RS232是什么?
RS-232是现在主流的串行通信接口
[嵌入式]
STM8L的printf函数实现
串口通信是单片机学习的一个最基本、最重要的功能之一。串口可以间接的当做调试接口使用,实现单片机与电脑之间的通信。还可以与一些模块(比如蓝牙、wifi)通信,也可以作为和其他单片机通信的工具。作为开发者,熟悉串口是必须的。 =========================================== STM8L的USART特性: 我们在使用串口的时候,主要关心:波特率、停止位、奇偶校验位。 再次就是怎样接收、发送数据。常用:阻塞式发送数据、中断方式接收数据。 ========================================== 在单片机的调试过程中经常会要适时地输出变量的值,这时printf函数是一个非
[单片机]
stm32mp1 Cortex M4开发篇5:串行通讯接口
写在前面: 本文章为《ARM Cortex-M4裸机开发篇》系列中的一篇,,全系列总计14篇。笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板),Cortex-M4裸机开发篇除了讲M4裸机开发外,还会讲解通过M4控制资源扩展板上的各种传感器执行器模块(包括空气温湿度传感器、LED灯、数码管、蜂鸣器、震动马达、按键中断、风扇等),本篇是M4控制资源扩展板中的一篇。 资源扩展板是FS-MP1A开发板的扩展模块,主要包含了10余种助主流传感器、执行器件、总线控制器件,非常方便项目扩展用。可拓展开发智慧家庭、智能医疗、智能安防、工业控制、图像识别、环境检测等方向的10个左右综合项目,华清远见开发板也将配套提
[单片机]