void Serial_SendString(char *String) { uint8_t i; for (i =0; String[i] != '\0';i ++) { Serial_SendByte(String[i]); } } uint32_t Serial_Pow(uint32_t X,uint32_t Y) { uint32_t Result = 1; while(Y--) { Result *=X; } return Result; } void Serial_SendNumber(uint32_t Number, uint8_t Length) { uint8_t i; for (i=0;i<Length;i++) { Serial_SendByte(Number /Serial_Pow(10,Length-i-1)%10+'0'); } }
时间: 2024-04-02 08:34:39 浏览: 84
这是一些用于发送字符串和数字的函数。Serial_SendString函数用于发送字符串,它会遍历整个字符串,将每个字符都通过Serial_SendByte函数发送出去。Serial_SendNumber函数用于发送数字,它会将数字转换为字符串形式,然后通过Serial_SendByte函数一个一个地发送出去。Serial_Pow函数用于计算指数幂,它会返回X的Y次方的结果。这些函数可以方便地在串口通信中发送字符串和数字。
相关问题
void Serial_SendByte(uint8_t Byte) { USART_SendData(USART1, Byte); while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); } void Serial_SendArray(uint8_t *Array, uint16_t Length) { uint16_t i; for (i = 0; i < Length; i ++) { Serial_SendByte(Array[i]); } } void Serial_SendString(char *String) { uint8_t i; for (i = 0; String[i] != '\0'; i ++) { Serial_SendByte(String[i]); } } uint32_t Serial_Pow(uint32_t X, uint32_t Y) { uint32_t Result = 1; while (Y --) { Result *= X; } return Result; }
这段代码是用于STM32F10x芯片通过USART1串口发送数据的函数。它包括了三个函数:Serial_SendByte、Serial_SendArray和Serial_SendString。其中,Serial_SendByte函数用于发送一个字节的数据,Serial_SendArray函数用于发送一个字节数组,Serial_SendString函数用于发送一个字符串。这些函数均基于USART1串口发送数据,具体实现上,它们都是通过调用USART_SendData函数向USART1的数据寄存器写入数据,然后通过轮询USART_GetFlagStatus函数等待数据发送完成。此外,这段代码还包括了一个Serial_Pow函数,用于计算X的Y次方。
void Serial_SendNumber(uint32_t Number, uint8_t Length) { uint8_t i; for (i = 0; i < Length; i ++) { Serial_SendByte(Number / Serial_Pow(10, Length - i - 1) % 10 + '0'); } } int fputc(int ch, FILE *f) { Serial_SendByte(ch); return ch; } void Serial_Printf(char *format, ...) { char String[100]; va_list arg; va_start(arg, format); vsprintf(String, format, arg); va_end(arg); Serial_SendString(String); }
这段代码也是用于STM32F10x芯片通过USART1串口发送数据的函数,但是它的功能比前面的函数更为强大。它包括了三个函数:Serial_SendNumber、fputc和Serial_Printf。其中,Serial_SendNumber函数用于发送一个32位无符号整数(Number)的指定位数(Length)的十进制表示,fputc函数用于向标准输出流(stdout)输出一个字符,Serial_Printf函数用于向USART1串口发送格式化字符串。
Serial_SendNumber函数的实现中,它通过调用Serial_Pow函数计算每一位的数字,并将其转换为ASCII码发送到USART1串口。
fputc函数的实现中,它通过调用Serial_SendByte函数向USART1串口发送一个字符,并返回它的ASCII码值。
Serial_Printf函数的实现中,它通过调用vsprintf函数将格式化字符串格式化为字符数组,再通过调用Serial_SendString函数发送到USART1串口。其中,vsprintf函数是C语言标准库中的函数,它可以将格式化字符串格式化为字符数组。
阅读全文