※This article is based on STM32F1
初始化串口的的函数
UART_HandleTypeDef huart4; huart4.Instance = UART4; huart4.Init.BaudRate = 115200; huart4.Init.WordLength = UART_WORDLENGTH_8B; huart4.Init.StopBits = UART_STOPBITS_1; huart4.Init.Parity = UART_PARITY_NONE; huart4.Init.Mode = UART_MODE_TX_RX; huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart4.Init.OverSampling = UART_OVERSAMPLING_16; huart4.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart4.Init.ClockPrescaler = UART_PRESCALER_DIV1; huart4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART_Init(&huart4) != HAL_OK)
一种中断模式接收数据的函数。
注意如果设置接收数据不为1,而是某个固定的值,当串口接受的数据量不满足这个值的时候,串口中断不会被触发。一直等待接收数据满足设定值才会触发中断。如果出现接收出错可以使用HAL_USART_ErrorCallback函数来重置接收。
本函数必须在接受回调函数中再次调用才能经行下一次的接收。
#define num 1 uint16_t numd[num]; void UART_Init() { ..... HAL_UART_Receive_IT(&huart4,numd,num); } void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);//接收完成回调函数 { HAL_UART_Receive_IT(&huart,numd,num); }
串口发送数据的函数,最重要的函数之一。单工以阻塞模式发送大量数据。
发送数据的大小要注意是u8类型的(0-255)
HAL_UART_Transmit(&huart4,"222",3,2); //发送一个字符串 u8 num = 10; HAL_UART_Transmit(&huart4,&num,1,2); //发送一个数字 u16 num = 0xffde; u8 temp; temp = num>>8; HAL_UART_Transmit(&huart4,&temp,1,1); temp = num; HAL_UART_Transmit(&huart4,&temp,1,1); //发送一个十六位的数据
&ref(): File not found: "ZigBee_体系结构.png" at page "+STM32+HAL库函数";
コメント: