问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...中断发送和接收怎么回事,就是串口的中断方式和查询方式有什么区别...

发布网友 发布时间:2024-01-31 23:27

我来回答

2个回答

热心网友 时间:2024-03-06 21:00

使用中断接收发送方式,可随时响应串口的接收发送请求,提高串口响应时间;
在程序上操作步骤如下:
首先:在void RCC_Configuration(void)中配置好串口时钟;及在void GPIO_Configuration(void)配置好管脚;
RCC_PCLK2Config(RCC_HCLK_Div1); //串口波特率的确定
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA||RCC_APB2Periph_USART1, ENABLE);
/* Configure USART1 RTS (PA12) and USART1 Tx (PA9) as alternate function push-pull 根据资料可查得各管脚对应*/
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);

其次:在 void NVIC_Configuration(void)函数中使能串口中断;
/* Enable the USART1 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel; //通道设置为串口1中断(故后面应选择在“void USART1_IRQHandler(void)”开中断)
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //中断占先等级0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //中断响应优先级0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //打开中断
NVIC_Init(&NVIC_InitStructure);

其次。配置好串口,并开中断
/* Enable the USART1 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel; //通道设置为串口1中断(故后面应选择在“void USART1_IRQHandler(void)”开中断)
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //中断占先等级0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //中断响应优先级0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //打开中断
NVIC_Init(&NVIC_InitStructure);
最后,可在stm32f10x_.it.c中的void USART1_IRQHandler(void)函数里写上串口中断发生时中断服务函数即可;
u8 RX_dat; //定义字符变量
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //判断发生接收中断
{
RX_dat=(USART_ReceiveData(USART1) & 0x7F); //接收数据,整理除去前两位
USART_ClearITPendingBit(USART1, USART_IT_RXNE); //清除中断标志
while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET){}//等待接收结束
// USART_ITConfig(USART1, USART_IT_RXNE, DISABLE); //关中断
USART_SendData(USART1,RX_dat); //发送数据
}

程序实现功能:当有数据通过串口发送过来时,程序进入串口中断服务程序,在中断服务程序中发送接收到的数据;

热心网友 时间:2024-03-06 21:02

中断就像是后台操作一样,在主程序的流程中,不用刻意去关注中断方式发送了没有,何时接收等,而查询方式是在主程序流程中不断查看是否接收到了数据,一般用while不断循环查看。中断方式可以更高效利用CPU ,节省CPU的时间,查询就会增加CPU负担,在程序执行功能较少时,两种差别不大,功能较多时,一般都会采用中断方式。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 丨:4分之一的比值是( ),找一个和它比值相等的比来组成比例( 商用土地到期后怎么办 少林赋讲的什么 7-9个月宝宝辅食添加要点 有关出塞的古诗 马戴的出塞第二句中的冲字和第四句中的缺字结合诗句简要分析下 离婚后还能追究出轨么怀孕吗 葱爆羊肉的汤能做羊汤面吗? ...出塞 马戴金带连环束战袍,马头冲雪过临洮。卷旗夜劫单于帐,乱斫... ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 求比值 7/16:4= 2分米:1.5米= 填空 4.2吨:700千克=... 一年内怎么改第二次 重保障—购买保险切勿本末倒置 我误删了微信好友,没有其他的联系方式,也不记得他的,他也从 岖崎反义词是什么意思 一年级题16比4妁几求恰 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 把微信好友删除了!我怎么找回他的微信!没有记住,也没有手机... 把微信好友删除了!我怎么找回他的微信!没有记住,也没有手机... 2023雨水节气过后还冷吗 我国南方地区春节以来大范围持续性的雨水天气由什么导致? 男.1991.3.4 农历 正月十八 女.1991.4.4 农历 二月二十 求一个结婚日... 戴尔笔记本无法正常开机并提示“ SupportAssist is running 红旗超市有婚假产假吗? 这道题怎么做:Alexander tried to g 忘怀狎野禽的下一句是什么 舟山有哪些好玩的水上乐园推荐? 一年内怎么改第二次 伊宁市哪些高中比较好? 舟山夏令营日记 求高人指点2013年3-5月领证吉日,新娘1983,阳历5/5,新郎1984.阳历2/22... 铲伤张效瑞的是谁 戴尔电脑supportassist无法启动 我没被封,但是群聊和朋友圈被限制使用了,请问怎么解除限制?谢谢... 一个手机号注册了两个,我第一个号登不上去了,怎么办呢?谁能帮... 同一个手机号注册了两个微信,第一登不上了怎么办? 电影《人生大事》票房破11亿:人生两苦,生离和死别都要尝 烟台龙口海棠湾值得买吗? 有趣逢樵客的下一句是什么 忘怀狎野禽的解释是什么