[MM32软件]

MM32L073串口空闲中断问题

[复制链接]
638|11
手机看帖
扫描二维码
随时随地手机跟帖
pq113_6|  楼主 | 2020-11-21 18:40 | 显示全部楼层 |阅读模式
有没有人试过MM32L073的串口空闲中断功能?中断使能部分的代码:

    NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_5_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
    UARTx->IER |= 0x0040;
UART的中断处理函数:
void UART2_IRQHandler(void)
{
    if((UART2->ISR & 0x40) > 0))
    {

        UART2->ICR = 0x40;
    }
}


现在DMA的其他中断(半字中断和传输正确中断)都能正常工作,但是空闲中断并没有响应,有没有人确认过这个功能的?

使用特权

评论回复
zhu^zhu| | 2020-11-21 19:35 | 显示全部楼层
不好意思!MM32L073芯片没有支持串口空闲中断功能。

使用特权

评论回复
pq113_6|  楼主 | 2020-11-21 19:58 | 显示全部楼层
zhu^zhu 发表于 2020-11-21 19:35
不好意思!MM32L073芯片没有支持串口空闲中断功能。

难怪,看文档里面有,例程里面对应的头文件却没有定义。

使用特权

评论回复
zhu^zhu| | 2020-11-22 13:53 | 显示全部楼层
多谢!我马上查一下。

使用特权

评论回复
两只袜子| | 2020-11-23 08:45 | 显示全部楼层
MM32L073芯片没有支持串口空闲中断功能

使用特权

评论回复
pq113_6|  楼主 | 2020-11-23 10:17 | 显示全部楼层
zhu^zhu 发表于 2020-11-22 13:53
多谢!我马上查一下。

我看的是这段解释,不知道是不是对应空闲中断。 新建位图图像.bmp

使用特权

评论回复
大锋1234| | 2020-11-23 22:25 | 显示全部楼层
可以用软件模拟实现这个功能

使用特权

评论回复
pq113_6|  楼主 | 2020-11-24 08:36 | 显示全部楼层
大锋1234 发表于 2020-11-23 22:25
可以用软件模拟实现这个功能

目前在循环里面不停的读CNTR的数值,也实现了功能,感觉比空闲中断还好用。

使用特权

评论回复
zhu^zhu| | 2020-11-24 11:15 | 显示全部楼层
这是断开帧(BREAK)的标识,主要用于LIN总线的同步。的确这个可以用于帧同步,但不是空闲帧。空闲帧的定义是一段超过一个有效数据帧的空号(SPACE),认为是空闲帧。

使用特权

评论回复
zhangjianhu| | 2020-11-25 09:30 | 显示全部楼层
pq113_6 发表于 2020-11-24 08:36
目前在循环里面不停的读CNTR的数值,也实现了功能,感觉比空闲中断还好用。 ...

这个能详细说下吗?

使用特权

评论回复
pq113_6|  楼主 | 2020-11-25 10:25 | 显示全部楼层
zhangjianhu 发表于 2020-11-25 09:30
这个能详细说下吗?

就是DMA里面不停的读入串口数据(CIRCLE的模式),主程序在需要的时候读入CNTR值(即当前的wr indexz值),通过wr index值和rd index变量就知道DMA Buffer中的有效数据,将数据读出后更新rd index即可。就是用到了循环buffer的机制。

使用特权

评论回复
vitohu| | 2020-12-4 09:52 | 显示全部楼层
空闲中断功能

使用特权

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

本版积分规则

36

主题

284

帖子

2

粉丝