完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
学习理解STM32的串口通信,中断以及I2C的使用。串口通信 计算机的CPU与外部设备之间的信息交换,以及计算机与计算机之间的信息交换过程称为通信。
//查询模式(blocking mode阻塞模式)调用这个函数并在等待时间内一直等待操作完成。 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); //中断模式(non- blocking mode) HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); //DMA模式 HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); //中断服务函数 void HAL_UART_IRQHandler(UART_HandleTypeDef *huart); //中断回调函数 void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart); void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart); void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart); void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart); 串口接收包括查询模式和中断模式 若单片机作为主机(主动发起通信任务)与其他从机双向通信: 根据任务,查询方式发送、查询方式接收或中断方式接收。 若单片机作为从机与其他主机机双向通信: 中断方式接收,查询方式发送(在接收中断程序中发送)。 STM32 CubeMx实现
查询发送 代码 在main.c 中主函数里 添加 发送代码 HAL_UART_Transmit(&huart1,connctt,15,500);上面的receive_str 要在前面声明 uint8_t connctt[15]=“hello world”; 上面 发送函数里面参数,第一个为使用中断地址,第二个要发送的数组首地址,第三个发送字符串长度,第四个timeout (超过那个时间没法送成功,就会报错) 如果需要连续发送的到 while循环中,进行发送,加上延时,不然会一直连续发送。 查询接收代码 HAL_UART_Receive(&huart1,receive,15,500);和查询发送一样 需要对receive进行声明,uint8_t receive[15]; 参数也都一样 中断接收代码 /定义变量 uint8_t aRxBuffer;//开启中断接收 HAL_UART_Receive_IT(&huart1,(uint8_t *)&aRxBuffer,1);中断回调函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)注意中断接收每次接收必须要定长 如果接受到的数据是4个,而函数参数接受5个,那么中断接受不到结束的信号会一直等直到timeout。(查询方式的不需要) 编译 选择要使用的发送方式 和接收方式 写入代码 。 编译 传入hex文件 打开串口工具 (下面所使用到的安装包我都放到了个人网盘上,下载链接 打开串口后 从板子执行发送的字符串就会显示到上面,下面可以进行手动发送 (板子不在身边… 没法发测试图了… ) 综合应用 综合应用放到另一篇文章上 使用串口通信将按键值发送出来 ,并使用I2C将按键值保存 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1632 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1559 浏览 1 评论
985 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1605 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
652浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
521浏览 3评论
539浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
508浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 08:05 , Processed in 0.691883 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号