前言:

跟着星闪官网敲串口代码的时候在配置参数的时候,看官网数据位配置成3位,平常用串口正常都是8位,然后我就配置成了8位数据位,结果开串口调试助手起来看的时候打印不出来

正确代码:

#include "common_def.h"
#include "osal_debug.h"
#include "soc_osal.h"
#include "cmsis_os2.h"
#include "gpio.h"
#include "pinctrl.h"
#include "app_init.h"
#include "uart.h"
#define TASKS_TEST_TASK_STACK_SIZE      0x1000
#define TASKS_TEST_TASK_PRIO            (osPriority_t)(17)
#define TASK_TICK                       10

#define UART_TX_PIN     15
#define UART_RX_PIN     16
#define UART_ID         1

static uint8_t g_app_uart_rx_buff[16] = { 0 };

static uart_buffer_config_t g_app_uart_buffer_config = {
    .rx_buffer = g_app_uart_rx_buff,
    .rx_buffer_size = 16
};

/*串口初始化*/
void myuart_init(void)
{

    //复用引脚
    uapi_pin_set_mode(UART_TX_PIN, PIN_MODE_1);
    uapi_pin_set_mode(UART_RX_PIN, PIN_MODE_1);
    //配置UART
    uart_attr_t attr = {
        .baud_rate = 115200,
        .data_bits = 3, 
        .stop_bits = 1,
        .parity = 0
    };

    uart_pin_config_t pin_config = {
        .tx_pin = UART_TX_PIN,
        .rx_pin = UART_RX_PIN,
        .cts_pin = PIN_NONE,
        .rts_pin = PIN_NONE
    };
    uapi_uart_deinit(UART_ID); 
    uapi_uart_init(UART_ID, &pin_config, &attr, NULL, &g_app_uart_buffer_config);
}

static void *tasks_test_task(const char *arg)
{
    unused(arg);
    myuart_init();
    static uint8_t g_app_uart_tx_buff[512] = "Hello world";
    while (1)
    {   
        osal_msleep(2000);
        uapi_uart_write(UART_ID, g_app_uart_tx_buff, 512, 0);
        //printf("uart transimit");
        
    }

    return NULL;
}


static void tasks_test_entry(void)
{
    osThreadAttr_t attr;

    attr.name = "TasksTask";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = TASKS_TEST_TASK_STACK_SIZE;
    attr.priority = TASKS_TEST_TASK_PRIO;

    if (osThreadNew((osThreadFunc_t)tasks_test_task, NULL, &attr) == NULL) {
        /* Create task fail. */
    }
}   

/* Run the tasks_test_entry. */
app_run(tasks_test_entry);

数据位数改成3才能正常输出不会乱码,具体为什么8不是我也还没找到原因,有大佬知道的话帮忙指导一下

Logo

海思 HiSpark 开发者社区是上海海思为开发者搭建的内容和交流平台,依托完备芯片解决方案、专业开发环境、开源/开放的软件资源与社区技术内容,构建完整服务生态开发者的闭环体系。

更多推荐