32单片机模式串口(STC IAR )

4 篇文章 0 订阅
2 篇文章 0 订阅
在硬件串口资源耗尽的情况下,为满足程序调试中查看日志的需求,本文档介绍了一种通过软件模拟串口打印的方法。详细阐述了9600和115200波特率的位宽时间计算,并提供了相应的延时函数`delay_us`。同时,给出了`soft_send_byte`函数的实现,用于按位发送字节数据,以及自定义的`fputc`函数,将字符通过模拟串口发送出去。
摘要由CSDN通过智能技术生成

在做程序调试时,硬件串口被占用完了,而程序调试有需要看日志。针对这个问题,本次跟进软件串口编写了一个模拟串口打印程序。

9600波特率位宽时间确定:1000000/9600 = 104

115200波特率位宽时间确定:1000000/115200= 8.6

实现程序:

void delay_us(u16 time)
{    
   u16 i=0;  
   while(time--)
   {
      i=17;  //自己定义
      while(i--) ;    
	   __nop();
	  // __nop();
   }
   
}
//#include "intrins.h"

void  soft_send_byte(unsigned char byte){
	  u16 i = 0;
	  gpio_bit_write(UART_PORT,UART_PIN,0);
	  delay_us(104);
	  for(i = 0;i<8;i++){
	   if(byte&0x01){
		gpio_bit_write(UART_PORT,UART_PIN,1);   
	   }else {
	     gpio_bit_write(UART_PORT,UART_PIN,0);
	   }  
	   byte = byte>>1;
	   delay_us(104);
	  }
	   gpio_bit_write(UART_PORT,UART_PIN,1);
	   delay_us(104); 
}
int fputc(int ch, FILE *f)
{
	//ITM_SendChar(ch);
	//uart_send_data(ch);
	soft_send_byte(ch);
    return ch;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值