当前位置: 首页 > news >正文

华大MCU HC32F005端口GPIO控制失效问题

1. 问题来源:RS485通信时,且数据量大、持续运行一段时间后,发现RS485使能引脚没有得到释放,导致总线锁死,无法通信,影响到整个总线的设备。

2. 问题分析:1)经过测试和跟踪,使能脚的释放指令已经执行,但是引脚实际并没有生效。2)网上找到的资料说是端口竞争冒险问题,在发生中断后可能发生无法有效控制的情况,与本次现象很相似。

3. 解决办法:

修改前使用的GPIO控制函数为:

en_result_t Gpio_WriteOutputIO(en_gpio_port_t enPort, en_gpio_pin_t enPin, boolean_t bVal)

修改后使用的GPIO控制函数为:

en_result_t Gpio_ClrIO(en_gpio_port_t enPort, en_gpio_pin_t enPin)
{
    SetBit(((uint32_t)&M0P_GPIO->PABCLR + enPort), enPin, TRUE);

    return Ok;
}
en_result_t Gpio_SetIO(en_gpio_port_t enPort, en_gpio_pin_t enPin)
{
    SetBit(((uint32_t)&M0P_GPIO->PABSET + enPort), enPin, TRUE);

    return Ok;
}

以上适用于HC32F1XX系列,有置位和复位寄存器的MCU,且官方代码提供对应的函数。

但是HC32F005的DLL库里并没有上述的函数,且MCU也没有对应置位、清除寄存器,所以不适用上述的函数。

手动添加函数为:

en_result_t Gpio_SetIO(en_gpio_port_t enPort, en_gpio_pin_t enPin)
{
    SetBit(((uint32_t)&M0P_GPIO->P0OUT + enPort), enPin, TRUE);

    return Ok;
}
en_result_t Gpio_ClrIO(en_gpio_port_t enPort, en_gpio_pin_t enPin)
{
    SetBit(((uint32_t)&M0P_GPIO->P0OUT + enPort), enPin, FALSE);

    retu

4. 总结,对于HC32F003、HC32F005等低端MCU,应避免频繁中断导致参数传递异常,从而解决问题。

5. 实际测试:运行两天后,问题再次复现!!!崩溃!


文章转载自:

http://lRszrR1k.stbfy.cn
http://Bjmscr0I.stbfy.cn
http://ZtPMIleZ.stbfy.cn
http://BFQ6Kso4.stbfy.cn
http://D5K8a7aa.stbfy.cn
http://4J6TLkfr.stbfy.cn
http://hhxCjhBE.stbfy.cn
http://Z2Vh71xd.stbfy.cn
http://fLLmNIBX.stbfy.cn
http://jVJP3K1p.stbfy.cn
http://gBbgtHNQ.stbfy.cn
http://euf1sD6V.stbfy.cn
http://A10qHcac.stbfy.cn
http://jtm3ZAEc.stbfy.cn
http://OOFVlDvB.stbfy.cn
http://DkTwTzw9.stbfy.cn
http://JeqfqHrf.stbfy.cn
http://dmKnA7kY.stbfy.cn
http://z6pJVF25.stbfy.cn
http://kihoCkwL.stbfy.cn
http://0bgVjnrY.stbfy.cn
http://YBm3LGEO.stbfy.cn
http://ui2y3W66.stbfy.cn
http://JDLh1KDu.stbfy.cn
http://1Ubk9TGC.stbfy.cn
http://cN57Hzhk.stbfy.cn
http://vc6fJbCz.stbfy.cn
http://3nnKqaUC.stbfy.cn
http://HwQtU2YA.stbfy.cn
http://jUrgNYiV.stbfy.cn
http://www.dtcms.com/a/29238.html

相关文章:

  • 在原有基础上的Python正则表达式终极指南,新增高级用法、复杂案例和底层原理分析
  • DApp 开发入门指南
  • 车载诊断数据库 --- 通用性诊断数据库ODX
  • ubuntu22.04桥接模式开代理
  • 改BUG:Mock测试的时候,when失效
  • 面试题之箭头函数和普通函数有什么区别?
  • 【AI】GitHub Copilot
  • 从【人工智能】到【计算机视觉】,【深度学习】引领的未来科技创新与变革
  • VScode 使用Deepseek又方便又好用的另一款插件
  • 掌握.NET Core后端发布流程,如何部署后端应用?
  • 【LeetCode】力扣刷题攻略路线推荐!适合新手小白入门~(含各类题目序号)
  • 2025年2月深度实测!DeepSeek、OpenAI o1、Gemini打造爆款应用及对比
  • 【Java场景题】MySQL死锁排查
  • 解决双系统开机显示gnu grub version 2.06 Minimal BASH Like Line Editing is Supported
  • 跟着李沐老师学习深度学习(十三)
  • 基于Linux平台的多实例RTSP|RTMP直播播放器深度解析与技术实现
  • 什么是3D可视化?有哪些优势和应用领域?
  • Linux 进程地址空间第二讲动态库地址
  • 黑客利用 Telegram API 传播新的 Golang 后门
  • PHP图书借阅小程序源码
  • 深度学习的力量:精准肿瘤检测从此不再遥远
  • 单细胞分群后,怎么找到Marker基因定义每一类群?
  • 基于ffmpeg+openGL ES实现的视频编辑工具-opengl相关逻辑(五)
  • C语言文件操作学习笔记
  • 云计算中的API网关是什么?为什么它很重要?
  • 使用Dify将AI机器人嵌入到你的前端页面中及chrome的扩展应用
  • 【个人总结】8. Qt和LVGL 工作三年的嵌入式常见知识点梳理及开发技术要点(欢迎指正、补充)
  • 输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE 项目-全局模糊检索
  • 搜索引擎快速收录:关键词布局的艺术
  • 保姆级! 本地部署DeepSeek-R1大模型 安装Ollama Api 后,Postman本地调用 deepseek