ME32G030的供的sdk都是使用原生寄存器操作的,需要一定C语言的基础,但是这样,也是非常高效的编程,编译的代码量非常小。
1、串口的初始化
在me32g030_uart.c中,提供了串口初始化的函数
void UART_Open(UART0_Type *uart, uint32_t baudrate, uint8_t parityoption, uint8_t rxinttriggerlevel)
根据函数说明:
<pre>Function Name UART_Open
Function Definition void UART_Open(UART0_Type *uart, uint32_t baudrate, uint8_t parityoption, uint8_t rxinttriggerlevel);
Function Description Initial UART
Input Parameters *uart : pointer to UART device, UART0/UART1/UART2/UART3
Baudrate: baudrate value
Parityoption: NO_PARITY, EVEN_PARITY, ODD_PARITY, UART_BIT9_ENABLE
Rxinttriggerlevel; UART_TRIGGER_LEVEL_1_BYTE , UART_TRIGGER_LEVEL_4_BYTES , UART_TRIGGER_LEVEL_8_BYTES,UART_TRIGGER_LEVEL_18_BYTES
Return Value No
Condition No
Function called -</pre>
复制代码第一个参数为UART0/UART1/UART2/UART3
第二个参数为波特率
第三个参数为奇偶校验
第四个参数为接收中断的级别。
2、串口IO的选择:
根据原理图:
串口分别接到了PA2、PA3,初始化引脚如下:
PA2_INIT(PA2_UART1_TX);
PA3_INIT(PA3_UART1_RX);
3、在接收中,判断UART 通讯线状态寄存器 (LSR】的接收位是否为1,如果为1,判断发送缓冲区是否为空为空是把接收到的数据装载进发送缓冲THR中,代码如下:
if (UART1->LSR_b.RDR) //如果接收缓冲器状态不为空
4、测试效果:
【总结】
通过两个试用,感觉敏矽微的库非常简单好用,没有太多的花稍,使用简洁!