赞
踩
电路和 《用HAL库改写江科大的stm32入门例子_9-1》一致。
我们在whlie循环当中,不断查询端口,获取数据,存放到一个数组当中,同时回显给电脑上。这种方法耗费cpu,还是用中断进行串口通讯更合理。
配置完成后,重新生成代码,打开生成的代码,在main.c文件的用户变量去建立串口接收缓冲区数组。
找到主函数,在while语句之前,开始通过串口中断接收数据。
HAL_UART_Receive_IT(&huart1, (uint8_t*)data, sizeof(data));
这句话的意思是以中断的方式从串口1接收数据,接收道到的数据存在data数组中,每次接收2个字节。
上个结果图:
注意串口中断回调函数中,要判断串口的来源,因为所有串口中断都用这个回调函数,同时要注意,在这个回调函数中重新开启中断接收。
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
- if(huart->Instance == USART1) //判断中断是否来自于串口1
- {
- HAL_UART_Transmit_IT(&huart1,(uint8_t*)rx_data,2); //将接收到的数据通过中断的方式发送出去
- HAL_UART_Receive_IT(&huart1,(uint8_t*)rx_data,2); //开始接收下一轮数据
- }
- }
其他不赘述。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。