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