MSP432自主开发笔记3:串口__编写自定义printf发送函数、编写发送字节字符串函数编写
发布人:shili8
发布时间:2025-01-09 01:16
阅读次数:0
**MSP432 自主开发笔记3:串口**
在前面的两篇笔记中,我们已经完成了 MSP432 的基本设置和 GPIO 的使用。现在,我们将进入更高级的主题——串口通信。在这个笔记中,我们将编写自定义 `printf` 发送函数、发送字节字符串函数,并进行测试。
**1. 编写自定义 printf 发送函数**
在标准 C 库中,`printf` 函数用于打印输出到屏幕上。但是,在 MSP432 上,我们需要自己实现一个类似的函数来完成串口通信。我们将其称为 `msp_printf`。
cvoid msp_printf(const char *format, ...) { //读取缓冲区大小 uint32_t size = strlen(format); // 将数据写入缓冲区 uint8_t buffer[size +1]; va_list args; va_start(args, format); vsnprintf((char *)buffer, size +1, format, args); va_end(args); // 发送缓冲区内容到串口 msp_send_string(buffer); }
在这个函数中,我们首先读取 `format` 字符串的长度,然后将数据写入一个缓冲区。最后,我们使用 `msp_send_string` 函数发送缓冲区内容到串口。
**2. 编写发送字节字符串函数**
在前面的函数中,我们使用了 `vsnprintf` 来格式化输出。但是,在 MSP432 上,我们可能需要发送原始的字节数据,而不是经过格式化的字符串。因此,我们需要编写一个新的函数来完成这个任务——`msp_send_bytes`。
cvoid msp_send_bytes(const uint8_t *data, uint32_t size) { // 发送字节数据到串口 for (uint32_t i =0; i < size; i++) { msp_send_byte(data[i]); } }
在这个函数中,我们简单地将 `data` 指针中的每个字节发送到串口。
**3. 编写测试代码**
现在,我们已经完成了自定义 `printf` 发送函数和发送字节字符串函数。接下来,我们需要编写一些测试代码来验证这些函数的正确性。
cint main() { // 初始化 MSP432 msp_init(); // 测试 msp_printf 函数 msp_printf("Hello, world! "); msp_printf("This is a test string. "); // 测试 msp_send_bytes 函数 uint8_t data[] = {0x01,0x02,0x03,0x04}; msp_send_bytes(data, sizeof(data)); return0; }
在这个测试代码中,我们首先初始化 MSP432,然后使用 `msp_printf` 函数发送一些测试字符串。最后,我们使用 `msp_send_bytes` 函数发送一个字节数组。
**总结**
在本笔记中,我们完成了自定义 `printf` 发送函数和发送字节字符串函数的编写,并进行了测试。这些函数将有助于我们在 MSP432 上实现更高级的串口通信功能。在下一篇笔记中,我们将继续探索更多的主题,例如接收数据和处理异常等。