ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

ch58x/ch59x gpio模拟串口发送

ch58x/ch59x gpio模拟串口发送

波特率(Baud Rate)是每秒传输的位数(bits per second, bps),位时间(Bit Time)是每 bit 的持续时间:

Bit Time (μs)=Baud Rate1​×106
 
波特率
理论位时间 (US)
DELAYUS 应设值
适用场景
9600
104.17
104
低速稳定通信
19200
52.08
52
常用中速
38400
26.04
26
中高速
57600
17.36
17
高速(需优化代码)
115200
8.68
9
极限(需硬件支持)

 

复制代码
#include "HAL.h"
#include "stdarg.h" #include "stdio.h" #define    SIMGPIO_PIN    GPIO_Pin_4 #define delaytime 52 //19200波特率 /******************************************************************************** @fn SoftwareUART_SendChar** @brief SoftwareUART_SendChar** @param Char** @return None.*/ void SoftwareUART_SendChar(char c) {// 起始位(低电平)GPIOA_ResetBits(SIMGPIO_PIN);DelayUs(delaytime);// 数据位(低位在前)for (int i = 0; i < 8; i++){if (c & (1 << i)){GPIOA_SetBits(SIMGPIO_PIN);}else{GPIOA_ResetBits(SIMGPIO_PIN);}DelayUs(delaytime);}// 停止位(高电平)GPIOA_SetBits(SIMGPIO_PIN);DelayUs(delaytime); }/******************************************************************************** @fn SoftwareUART_SendString** @brief SoftwareUART_SendString** @param *str** @return None.*/ void SoftwareUART_SendString(char* str) {while (*str){SoftwareUART_SendChar(*str++);} }/******************************************************************************** @fn SoftwareUART_Printf** @brief SoftwareUART_Printf** @param** @return None.*/ void SoftwareUART_Printf(const char* format, ...) {char buffer[256]; // 定义一个足够大的缓冲区va_list args;va_start(args, format);vsnprintf(buffer, sizeof(buffer), format, args);va_end(args);SoftwareUART_SendString(buffer); }
复制代码

 

①需要将模拟串口打印的IO初始化为推挽输出模式,

    GPIOA_SetBits(SIMGPIO_PIN);GPIOA_ModeCfg(SIMGPIO_PIN, GPIO_ModeOut_PP_5mA);

②调用SoftwareUART_Printf即可完成数据打印,例如:

    SoftwareUART_Printf("%s\n", VER_LIB);
返回列表