#author("2024-12-23T15:01:05+08:00","default:Admin","Admin") [[STM32]] #author("2024-12-23T15:54:54+08:00","default:Admin","Admin") &color(red){※This article is based on STM32F1}; #contents * HAL_UART_Init(UART_HandleTypeDef * husart) [#c246453d] 初始化串口的的函数 #codeprettify{{ 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) }} * HAL_StatusTypeDef HAL_UART_Receive_IT (UART_HandleTypeDef * huart, uint8_t * pData, uint16_t Size) [#eb3cbab4] 一种中断模式接收数据的函数。 - huart :接收数据串口指针。 - pdata 接收区的指针 - size 接受数据量字节长度,一般设置接收长度为1,每次接受一个字节的数据就进入中断处理。 注意如果设置接收数据不为1,而是某个固定的值,当串口接受的数据量不满足这个值的时候,串口中断不会被触发。一直等待接收数据满足设定值才会触发中断。如果出现接收出错可以使用HAL_USART_ErrorCallback函数来重置接收。 本函数必须在接受回调函数中再次调用才能经行下一次的接收。 #codeprettify{{ #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); } }} * HAL_StatusTypeDef HAL_UART_Transmit (UART_HandleTypeDef * husart, uint8_t * pTxData, uint16_t Size, uint32_t Timeout) [#k62bdfef] 串口发送数据的函数,最重要的函数之一。单工以阻塞模式发送大量数据。 - huart :要发送数据的串口指针 - ptxData:要发送的数据,注意此处的指针形式 - Size:发送数据的长度(字节数) - Timeout:发送数据超时时间 发送数据的大小要注意是u8类型的(0-255) #codeprettify{{ 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(ZigBee_体系结构.png); #hr(); コメント: #comment_kcaptcha