完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
//main.c //最大256可以用宏定义其他大小是最好的 uint8_t aRxBuffer; //接收中断缓冲 uint8_t rxBuff[256]; //接收缓冲,可以宏定义 uint8_t rxCnt = 0; //接收缓冲计数 uint8_t overErr[] = "数据超过256rn"; /* main()函数中使能接收,进入中断回调函数 */ //每次接收完数据后会关闭接收,因而要重新使能一次 //每次接收数据都会进入中断,但只有在接收的书目等于设定的size时才进入回调函数 HAL_UART_Receive_IT(&huart1,&aRxBuffer,1); //串口回调函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) { /* Prevent unused argument(s) compilation warning */ UNUSED(UartHandle); if(rxCnt >= 255) //溢出判断,要注意溢出后的数据还是会接收进来 { rxCnt = 0; //memset(void *buffer, int c, int count) buffer:为指针或是数组, c:是赋给buffer的值,count:是buffer的长度. //清空数组.原型是memset(buffer, 0, sizeof(buffer)) memset(rxBuff,0x00,sizeof(rxBuff)); HAL_UART_Transmit(&huart1, (uint8_t *)&overErr, sizeof(overErr),0xFFFF); } else { rxBuff[rxCnt++] = aRxBuffer; //接收数据转存 if((rxBuff[rxCnt-1] == 0x0A)&&(rxBuff[rxCnt-2] == 0x0D)) //判断结束位 { HAL_UART_Transmit(&huart1, (uint8_t *)&rxBuff, rxCnt,0xFFFF); //将收到的信息发送出去 rxCnt = 0; memset(rxBuff,0x00,sizeof(rxBuff)); //清空数组 } } while(HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1)==HAL_OK); //再开启接收中断 } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
568浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:35 , Processed in 0.919166 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号