完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
一、准备工作
本文所使用的硬件设备为野火的指南者开发板,利用商家提供的例程完成串口的中断通信。
**我们这次所使用的是串口中断收发的例程,所以我们在主程序中进行循环间隔地输出helloworld,控制收发的部分需要在串口中断服务函数中进行修改,野火例程的中断服务函数在stm32f10x_it.c中。
int i=0;int ch; uint8_t ucTemp[20]; void DEBUG_USART_IRQHandler(void) { if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET) //接收触发 { ucTemp = USART_ReceiveData(USART1); //接收缓存 } //接收完毕后,判断是否为停止标志 if(ucTemp == '!'&&ucTemp[i-1] == '2'&&ucTemp[i-2] == '3'&&ucTemp[i-3] == 'm'&&ucTemp[i-4] == 't'&&ucTemp[i-5] == 's' &&ucTemp[i-6] == ' '&&ucTemp[i-7] == 'p'&&ucTemp[i-8] == 'o'&&ucTemp[i-9] == 't'&&ucTemp[i-10] == 's') { printf("停止发送n"); for(i=0;i<20;i++) { ucTemp=0; //清空接收缓存 } while(1) //停止发送后一直循环,等待继续发送标志 { if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET) //接收到发送标志 { ch = USART_ReceiveData(USART1); //将接收到的值赋给ch } if(ch == '1') //如果接受到`1`,继续发送 { ch=0; printf("继续发送n"); break; } } } i++; } 主程序 int main(void) { int m,n; USART_Config(); //串口初始化 while(1) { printf("helloworldn"); for(m=0;m<10000;m++) for(n=0;n<500;n++); } }
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1804 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1097 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
736 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1686 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
747浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
580浏览 3评论
602浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 09:00 , Processed in 0.980133 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号