完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
串口中断问题
int main (void) { I2C_EE_Init(); /* 串口1初始化 */ USART1_Config(); NVIC_Configuration(); while(1) { ADC_1(); ADC_2(); ADC_3(); ADC_11(); ADC_12(); } } 做了一个串口中断来判断数组,但是为什么中断完了之后,没有继续循环WHILE循环? 哪位高手告诉下! void USART1_IRQHandler(void)//读取串口的数据 { u8 c; if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { c=USART1->DR; if(i<10) { a[i]=USART_ReceiveData(USART1); i++; } if(i==9) { USART1_1(); USART1_2(); i=0; } printf("%c",c); //将接受到的数据直接返回打印 } } |
|
相关推荐
1个回答
|
|
您好!从您提供的代码片段来看,您正在使用一个微控制器(可能是STM32)进行串口通信。您的代码中包含了一些初始化函数,如I2C_EE_Init(I2C EEPROM初始化)、USART1_Config(串口1初始化)和NVIC_Configuration(中断配置)。在while循环中,您调用了三个ADC(模数转换器)函数。
关于串口中断问题,您没有提供具体的信息,但我可以给您一些建议来解决常见的串口中断问题: 1. 确保您的USART1_Config函数正确配置了串口的波特率、数据位、停止位和奇偶校验位等参数。 2. 在NVIC_Configuration函数中,确保您已经正确地配置了串口中断优先级和使能了串口中断。 3. 在您的代码中,您需要定义一个串口中断处理函数,例如: ```c void USART1_IRQHandler(void) { if (USART1->SR & USART_SR_RXNE) // 检查接收缓冲区非空标志 { uint8_t data = USART1->DR; // 读取接收到的数据 // 在这里处理接收到的数据 } } ``` 4. 在您的主函数中,您需要在while循环中添加一个判断条件来检查是否有接收到的数据: ```c while(1) { if (USART1->SR & USART_SR_RXNE) // 检查接收缓冲区非空标志 { uint8_t data = USART1->DR; // 读取接收到的数据 // 在这里处理接收到的数据 } ADC_1(); ADC_2(); ADC_3(); } ``` 5. 如果您仍然遇到问题,请检查您的硬件连接,确保串口TX和RX引脚正确连接到外部设备。 6. 如果您使用的是STM32CubeMX工具,您可以使用它来自动生成初始化代码和中断处理函数。 希望这些建议能帮助您解决串口中断问题。如果您有更具体的问题,请提供更多详细信息,我会尽力帮助您。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1552 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1497 浏览 1 评论
924 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
660 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1549 浏览 2 评论
1846浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
603浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
502浏览 3评论
504浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
485浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-7 20:36 , Processed in 0.571220 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号