Step1.打开 STM32CubeMX,新建project
Step2.在 Pinout 界面下配置 USART1 的模式为 Asynchronous,即异步串口模式 ** Asynchronous 异步串口模式 Synchronous 同步串口模式 HAL_HalfDuplex 半双工模式 Multiprocessor Communication 多处理器通信模式 IrDA 红外通讯 LIN 局域互联网模式 SmartCard 智能卡模式 ** Step3.配置串口参数 Configuration界面 -> Parameter Settings -> 设置波特率115200,数据宽度8,停止位为1,设置奇偶校验位Parity为None。
Step4.修改main函数:
int main(void)
{
uint8_t buf[]="usart test\r\n";
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
while (1)
{
HAL_UART_Transmit(&huart1,"hello world\r\n",8,10);
HAL_Delay(1000);
HAL_UART_Transmit(&huart1,buf,12,10);
}
}
函数解析:(USART发送函数) HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size,uint32_t Timeout)
UART_HandleTypeDef *huart: CubeMX 配置生成的代码中已经定义了 huart1,并且在初始化函数 MX_USART1_UART_Init( )代码中已经将该变量和硬件的USART1 进行了关联,所以操作的就是 USART1。
uint8_t *pData:是要发送的数据的指针,可以像本例一样,直接写入字符串。但是要注意的是,该函数并不像 printf()一样有格式转换功能。 uint16_t Size :第三个参数 Size:本次要发送的字符数量。Size值比字符串小,发送的字符串会不完整。 uint32_t Timeout:超时时间,单位是 ms。这是发送一个字符的超时时间,如果发送某个字符超过了所给的参数,则函数会返回 HAL_TIMEOUT
|