呜呜呜呜晗 发表于 2023-11-4 19:35:13

怎么样在freertos任务中重新初始化外设

freertos中比如,任务1:接收到上位机发送命令修改串口3波特率相关配置 ,直接重新初始化串口3配置,任务2:也就是串口3接收任务,一直运行,硬汉哥可以这样吗,程序不会跑飞吧

eric2013 发表于 2023-11-5 10:12:08

接收上位机命令用的什么通信方式,也是串口3吗

呜呜呜呜晗 发表于 2023-11-5 19:20:08

eric2013 发表于 2023-11-5 10:12
接收上位机命令用的什么通信方式,也是串口3吗

对,也是串口3

cctv180 发表于 2023-11-5 20:11:32

裸机letter shell试过,没问题(看乱码部分)乱码之后我手工改了波特率就正常了。

/*
*********************************************************************************************************
*   函 数 名: comSetBaud
*   功能说明: 设置串口的波特率. 本函数固定设置为无校验,收发都使能模式
*   形    参: _ucPort: 端口号(COM1 - COM8)
*             _BaudRate: 波特率,8倍过采样波特率.0-12.5Mbps
*                               16倍过采样 波特率.0-6.25Mbps
*   返 回 值: ret
*********************************************************************************************************
*/
int comSetBaud(COM_PORT_E _ucPort, uint32_t _BaudRate)
{
    UART_T *pUart;
    UART_HandleTypeDef *huart;

    uint16_t brrtemp;
    UART_ClockSourceTypeDef clocksource;
    uint32_t usartdiv;
    HAL_StatusTypeDef ret = HAL_OK;
    uint32_t lpuart_ker_ck_pres;
    PLL2_ClocksTypeDef pll2_clocks;
    PLL3_ClocksTypeDef pll3_clocks;
    uint32_t pclk;

    pUart = ComToUart(_ucPort);
    if (pUart == 0)
    {
      return -1;
    }

    huart = pUart->huart;
    huart->Init.BaudRate = _BaudRate;
    /*   参考 stm32xx_hal_uart.c --> UART_SetConfig() 中寄存器 BRR 配置部分。   */
    /*-------------------------- USART BRR Configuration -----------------------*/
https://ghproxy.com/https://raw.githubusercontent.com/cctv180/STM32H743XI_Demo/main/User/bsp/src/bsp_uart.c

呜呜呜呜晗 发表于 2023-11-6 17:21:12

cctv180 发表于 2023-11-5 20:11
裸机letter shell试过,没问题(看乱码部分)乱码之后我手工改了波特率就正常了。

...

感谢 我得去试试看
页: [1]
查看完整版本: 怎么样在freertos任务中重新初始化外设