本帖最后由 ewge 于 2024-1-19 18:16 编辑
我的代码如下:
- void uart2_init(uint32_t baudtate)
- {
- uint32_t u32Fcg1Periph = PWC_FCG1_PERIPH_USART1 | PWC_FCG1_PERIPH_USART2 ;
- const stc_usart_uart_init_t stcInitCfg = {
- UsartIntClkCkOutput,
- UsartClkDiv_1,
- UsartDataBits8,
- UsartDataLsbFirst,
- UsartOneStopBit,
- UsartParityNone,
- UsartSampleBit8,
- UsartStartBitFallEdge,
- UsartRtsEnable,
- };
- /* Enable peripheral clock */
- PWC_Fcg1PeriphClockCmd(u32Fcg1Periph, Enable);
- /* Initialize USART IO */
- PORT_SetFunc((en_port_t)USART2_TX_PORT, (en_pin_t)USART2_TX_PIN, Func_Usart2_Tx|Func_Usart2_Rx, Disable);
- /* Initialize UART */
- USART_UART_Init(M4_USART2, &stcInitCfg);
- /* Set baudrate */
- USART_SetBaudrate(M4_USART2, baudtate);
- /*Enable RX && RX interupt && timeout interrupt function*/
- USART_FuncCmd(M4_USART2, UsartTx, Enable); //使能发射
- USART_FuncCmd(M4_USART2, UsartRx, Enable); //使能接收
- }
在该模式下,使用 TX引脚进行数据的发送和接收,不占用 RX 引脚。写数据到 USARTn_DR.TDR寄存器后,UARTx_TXD 引脚立即进入发送状态,输出 USARTn_DR.TDR 寄存器中的数据。数据 发送完成后,UARTx_TXD 引脚恢复到常态的接收状态。
|