UART_Polling模式代码

主函数

usart_polling.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
int main(void)
{
uint8_t ch;
usart_config_t config; // 配置波特率、帧格式、上升下降沿、奇偶校验、停止位等

/* Security code to allow debug access */
SYSCON->CODESECURITYPROT = 0x87654320;

/* attach clock for USART(debug console) */
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);

/* reset FLEXCOMM for USART */
RESET_PeripheralReset(kFC0_RST_SHIFT_RSTn);

BOARD_BootClockRUN();
BOARD_InitDebugConsole();
BOARD_InitPins();
/*
* config.baudRate_Bps = 115200U;
* config.parityMode = kUSART_ParityDisabled;
* config.stopBitCount = kUSART_OneStopBit;
* config.loopback = false;
* config.enableTx = false;
* config.enableRx = false;
*/
USART_GetDefaultConfig(&config); // 使用默认配置,传入config的引用
config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE; // 客制化usart配置
config.enableTx = true;
config.enableRx = true;

USART_Init(DEMO_USART, &config, DEMO_USART_CLK_FREQ); // 使用config和外部时钟初始化USART实例,其中外部时钟只在设置波特率时使用

USART_WriteBlocking(DEMO_USART, txbuff, sizeof(txbuff) - 1); // 将数组中的值写入

while (1)
{
PRINTF("READ:\n\r");
USART_ReadBlocking(DEMO_USART, &ch, 1); // 数据逐个从FIFORD读入ch,这里只读入一位
PRINTF("\n\rWRITE:\n\r");
USART_WriteBlocking(DEMO_USART, &ch, 1); // 数据逐个从ch写入FIFOWR,这里只读入一位,等待TX进入IDLE模式结束
PRINTF("\n\r");
}
}

只接收一个char

实验结果:

接收字符串

原始代码修改为接收一个定长5的array,代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
int main(void)
{
uint8_t array[6];
usart_config_t config;

/* Security code to allow debug access */
SYSCON->CODESECURITYPROT = 0x87654320;

/* attach clock for USART(debug console) */
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);

/* reset FLEXCOMM for USART */
RESET_PeripheralReset(kFC0_RST_SHIFT_RSTn);

BOARD_BootClockRUN();
BOARD_InitDebugConsole();
BOARD_InitPins();
/*
* config.baudRate_Bps = 115200U;
* config.parityMode = kUSART_ParityDisabled;
* config.stopBitCount = kUSART_OneStopBit;
* config.loopback = false;
* config.enableTx = false;
* config.enableRx = false;
*/
USART_GetDefaultConfig(&config);
config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE;
config.enableTx = true;
config.enableRx = true;

USART_Init(DEMO_USART, &config, DEMO_USART_CLK_FREQ);

USART_WriteBlocking(DEMO_USART, txbuff, sizeof(txbuff) - 1);

while (1)
{
PRINTF("READ:\n\r");
USART_ReadBlocking(DEMO_USART, &array, sizeof(array) - 1);
PRINTF("\n\rWRITE:\n\r");
USART_WriteBlocking(DEMO_USART, &array, sizeof(array) - 1);
PRINTF("\n\r");
}
}

实验结果:

作者

Gavin

发布于

2022-10-17

更新于

2022-10-17

许可协议

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×