[N32WBxxx] N32WB031KEQ6 BLE程序中如何使用LPUART?

[复制链接]
 楼主| szdbg 发表于 2025-7-14 15:19 | 显示全部楼层 |阅读模式
官方开发包提供的LPUART例程中是在非BLE环境中运行的,我测试运行也没有问题,STOP模式下,LPUART收发数据正常。

但是当我将这代码移植么rtdss例程中去时,LPUART工作就不正常了,调试跟踪发现,是主循环中rwip_schedule();一句引起的,如果注释这一句LPUART工作就正常,恢复这一句后,LPUART就接收不到数据了?

不知如何解决,请高手指点,谢谢!
天灵灵地灵灵 发表于 2025-7-22 10:17 | 显示全部楼层
调整LPUART中断优先级
天灵灵地灵灵 发表于 2025-7-22 10:17 | 显示全部楼层
修改BLE调度处理方式
天灵灵地灵灵 发表于 2025-7-22 10:17 | 显示全部楼层
确保LPUART和BLE使用的时钟源在低功耗模式下都能正常工作:

// 在系统初始化时配置
RCC_APB1PeriphClockCmd(RCC_APB1Periph_LPUART1, ENABLE);
// 确保低功耗模式下时钟仍然有效
PWR_LowPowerModeClockConfig(PWR_LowPowerModeClock_LPUART1_ENABLE);
天灵灵地灵灵 发表于 2025-7-22 10:17 | 显示全部楼层
使用DMA传输
考虑使用DMA进行LPUART数据传输,减少中断冲突:

// 配置LPUART DMA
DMA_InitTypeDef DMA_InitStructure;
// ... DMA初始化代码
LPUART_DMACmd(LPUART1, LPUART_DMAReq_Rx, ENABLE);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

10

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部