打印
[STM32L4]

新技能GET,串口空闲中断的使用,用于帧数据接收

[复制链接]
3305|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
昨晚看到一个帖子,讲到了IDLE中断的用法,真是豁然开朗,之前一直不知道这个中断能干什么,在这也感谢 wanglaojii 的分享---《STM32单片机的接收不定长度字节数据的方法》。

随后我便拿NUCLEO-L432一试,加上了DMA,效果杠杠滴。


void Usart_Init(u8 Fck,u32 Bot)
{
  RCC->AHB2ENR|=0x1;
  RCC->APB1ENR1|=RCC_APB1ENR1_USART2EN;
  GPIOA->AFR[1]=0x30000000u;
  GPIOA->AFR[0]=0x00000700u;
  IOset(GPIOA,Px2_TB|Px15_TB,Px2_OB|Px15_OB,2,3,0,0,1);
  
  USARTx->CR1=0;
  USARTx->CR2=0;
  USARTx->CR3=0;
  
  USARTx->BRR=Fck*1000000/Bot;
  USARTx->CR1=0x212c;
  USARTx->CR1&=~0x20;
  USARTx->CR1|=USART_CR1_IDLEIE;             //开启IDLE中断
  USARTx->CR3|=USART_CR3_DMAR;              //接收DMA使能
  USARTx->CR1|=1;
  DMA1_USART2_RX_init(1,(u32)&USART_R_Buf);//DMA配置
  USART2_Start((u32)USART_R_Buf,128);
  NVIC->ISER[1]|=1<<(USART2_IRQn-32);
  NVIC->IP[USART2_IRQn]=0x80;
}


在帧传输过程中由DMA接管,CPU可以安心的做别的事情,但一帧数据(帧长度任意)结束之后,就会触发IDLE中断,此时CPU即可处理该帧数据。
是不是很方便,哈哈。




附上工程(纯寄存器代码): test.rar (700.58 KB)


谢谢阅览~




沙发
joketinnle| | 2016-8-14 18:22 | 只看该作者
不错涨姿势了,,之前一直用回车键,,,

使用特权

评论回复
板凳
mmuuss586| | 2016-8-14 18:25 | 只看该作者
谢谢分享

使用特权

评论回复
地板
yklstudent| | 2016-8-14 18:57 | 只看该作者
通信关键还是协议,其它都不是问题

使用特权

评论回复
5
时光深巷已无她| | 2016-8-14 19:38 | 只看该作者
大神,你知不知道它是怎么触发接收中断的吗

使用特权

评论回复
6
joketinnle| | 2016-8-14 20:03 | 只看该作者
时光深巷已无她 发表于 2016-8-14 19:38
大神,你知不知道它是怎么触发接收中断的吗

检测 空字符吧

使用特权

评论回复
7
yiyigirl2014| | 2016-8-14 22:34 | 只看该作者
这个方法还没用过,不知道好用不,学习一下。

使用特权

评论回复
8
sjw1716094642|  楼主 | 2016-8-14 22:46 | 只看该作者
时光深巷已无她 发表于 2016-8-14 19:38
大神,你知不知道它是怎么触发接收中断的吗

额,IDLE是检测到空闲帧,也就是空字符,就中断。接收中断RXNE是接收数据寄存器不为空,就中断。。

使用特权

评论回复
9
sjw1716094642|  楼主 | 2016-8-14 22:48 | 只看该作者
yklstudent 发表于 2016-8-14 18:57
通信关键还是协议,其它都不是问题

给协议创造一个良好的环境也是不错的

使用特权

评论回复
10
icecut| | 2016-8-15 10:02 | 只看该作者
modbus 大家都不用的帧超时,就是类似的设计

使用特权

评论回复
11
zqh1630| | 2016-8-15 13:33 | 只看该作者
mark一下

使用特权

评论回复
12
80x86abc| | 2016-8-26 17:34 | 只看该作者
寄存器实现的好

使用特权

评论回复
13
dongnanxibei| | 2016-8-26 21:25 | 只看该作者
DMA真是个好东西,不过我学的还是不够好,多跟高手们学习学习。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:欢迎加入微控制家园,讨论微控制技术:群号 258891985

24

主题

302

帖子

8

粉丝