GD32替换STM32使用HAL库开发问题
GD32HAL库开发问题
- 1can初始化进入error handle
- 2发送邮箱不能按照填写顺序发送
- 3 GD32修改代码被stm32cudemx覆盖问题
1can初始化进入error handle
HAL库的HAL_CAN_Init中,hcan->Instance->MSR寄存器无法清零,STM32先清零,再退出睡眠模式,而GD32需要先退出才能清零
while ((hcan->Instance->MSR & CAN_MSR_INAK) == 0U) {if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE) {/* Update error code */hcan->ErrorCode |= HAL_CAN_ERROR_TIMEOUT;/* Change CAN state */hcan->State = HAL_CAN_STATE_ERROR;return HAL_ERROR;}
再其前面加上退出睡眠语句即可
#if defined(GD32F407xx)CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_SLEEP);#endif/* Wait initialisation acknowledge */while ((hcan->Instance->MSR & CAN_MSR_INAK) == 0U) {if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE) {/* Update error code */hcan->ErrorCode |= HAL_CAN_ERROR_TIMEOUT;/* Change CAN state */hcan->State = HAL_CAN_STATE_ERROR;return HAL_ERROR;}}
2发送邮箱不能按照填写顺序发送
配置了发送邮箱按照填写邮箱的先后顺序发送,ST可以按照顺序发送,而GD不行

查看HAL_CAN_AddTxMessage里面,发现transmitmailbox = (tsr & CAN_TSR_CODE) >> CAN_TSR_CODE_Pos获取的GD32空闲的邮箱不对
/* Select an empty transmit mailbox */transmitmailbox = (tsr & CAN_TSR_CODE) >> CAN_TSR_CODE_Pos;/* Check transmit mailbox value */if (transmitmailbox > 2U) {/* Update error code */hcan->ErrorCode |= HAL_CAN_ERROR_INTERNAL;return HAL_ERROR;}
对比文档发现,CAN_TSR_CODE的寄存器ST和GD定义不一样,ST表示的是空闲邮箱,而GD表示下一个发送邮箱


通过TMEx获取空闲邮箱后正常
if (((tsr & CAN_TSR_TME0) != 0U) || ((tsr & CAN_TSR_TME1) != 0U) || ((tsr & CAN_TSR_TME2) != 0U)) {/* Select an empty transmit mailbox */transmitmailbox = (tsr & CAN_TSR_CODE) >> CAN_TSR_CODE_Pos;#if defined(GD32F407xx)if (CAN_TSR_TME0 == (tsr & CAN_TSR_TME0)) {transmitmailbox = 0;} else if (CAN_TSR_TME1 == (tsr & CAN_TSR_TME1)) {transmitmailbox = 1;} else if (CAN_TSR_TME2 == (tsr & CAN_TSR_TME2)) {transmitmailbox = 2;} else {transmitmailbox = 3;}#endif/* Check transmit mailbox value */if (transmitmailbox > 2U) {/* Update error code */hcan->ErrorCode |= HAL_CAN_ERROR_INTERNAL;return HAL_ERROR;}
3 GD32修改代码被stm32cudemx覆盖问题
在上面中,对GD32不一样的地方加入了GD32F407xx预处理命令,在KEIL或stm32cubeid中定义该宏就可以编译可以加入GD32代码,但是每次重新生成代码都会被覆盖。在库文件里面修改改文件后,cubemx生成文件时从库复制过来就是修改后的文件。
对应的库文件路径在C:\Users\用户名\STM32Cube\Repository\STM32Cube_FW_F4_V1.27.1\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c
相关文章:
GD32替换STM32使用HAL库开发问题
GD32HAL库开发问题 1can初始化进入error handle2发送邮箱不能按照填写顺序发送3 GD32修改代码被stm32cudemx覆盖问题 1can初始化进入error handle HAL库的HAL_CAN_Init中,hcan->Instance->MSR寄存器无法清零,STM32先清零,再退出睡眠模…...
PE文件分析
用PEView及Python程序分析压缩包中的lab01.exe和lab01.dll两个PE文件,关键步骤给出截图: 分析两个文件的文件头中的各部分; 2.找出时间戳,计算出两个文件的生成时间; 注:时间戳为从1970年1月1日0时0分0秒到…...
MySQL 中文转拼音函数
需求是将字符串中的汉字转为拼音。创建一个汉字转拼音的函数,在其中判断每个字符是否为中文,如果是则查询拼音表取得对应的拼音,否则原样返回。网上的大部分 MySQL 转拼音函数都是通过创建一个拼音对照表,然后在自定义函数中查询该…...
HTML5+CSS3+JS小实例:蜂巢里的小蜜蜂光标特效
实例:蜂巢里的小蜜蜂光标特效 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" conten…...
leetcode做题笔记1410. HTML 实体解析器
「HTML 实体解析器」 是一种特殊的解析器,它将 HTML 代码作为输入,并用字符本身替换掉所有这些特殊的字符实体。 HTML 里这些特殊字符和它们对应的字符实体包括: 双引号:字符实体为 " ,对应的字符是 "…...
sql18(Leetcode1633各赛事的用户注册率)
代码: # Write your MySQL query statement belowselect r.contest_id,round(count(u.user_id)/(select count(user_id) from Users)*100,2) as percentage fromRegister as r left joinUsers as u on u.user_idr.user_id group by contest_id order by percen…...
开发旅游APP的意义
开发旅游APP的意义在于: 提升旅游服务水平:旅游APP能够提供更便捷、更高效的服务,例如随时随地在线获取新的出行信息,可以随时下单出行,游客可以获得最新的旅游指南、在线预订线路、酒店、当地美食、美食和天气预报等…...
docker安装xxl-job
主打的就是一个简洁明了!!! 脚本集合 新建 docker-compose.yml version: "3" services:xxl-job-mysql:image: mysql:5.7.35restart: always container_name: xxl-job-mysql environment:#设置root的密码MYSQL_ROOT_PASSWORD: yK…...
Django QuerySet.order_by SQL注入漏洞(CVE-2021-35042)
漏洞描述 Django 于 2021年7月1日发布了一个安全更新,修复了函数QuerySet.order_by中的 SQL 注入漏洞。 参考链接: Django security releases issued: 3.2.5 and 3.1.13 | Weblog | Django 该漏洞需要开发人员使用order_by功能。此外,还可…...
鼠标拖拽问题,不选中文本不触发单击事件
文章目录 1. 为什么鼠标单击的时候触发了mousemove事件?明明鼠标没有移动2. 鼠标拖拽元素怎么能不触发单击事件?怎么处理鼠标在元素内的相对定位,而不是每次定位到左上角?方式一:拖拽的元素没有注册click监听就不会触发…...
Java 之 final 详解
目录 一. 前言 二. final 的基础使用 2.1. 修饰类 2.2. 修饰方法 2.2.1. private 方法是隐式的 final 2.2.2. final 方法可以被重载 2.3. 修饰参数 2.4. 修饰变量 2.4.1. static final 2.4.2. blank final 2.4.3. 所有 final 修饰的字段都是编译期常量吗?…...
数据分析策略
文章目录 我想对比不同完整度40%,50%,60%抽样计算来10min的TI序列,它们的差异与完整率的关系,告诉我怎么对比即可 了解您的分析目标后,我可以提供一个比较不同完整度(40%,50%,60%&am…...
子虔科技亮相2023工业软件生态大会 以先进理念赋能工业软件发展
作为云化工业软件领先企业,子虔科技携多项全新云原生产品亮相2023工业软件生态大会。 本届大会以“共建新一代工业软件体系,引领制造业高质量发展”为主题,集结行业领先企业、行业专家探究工业软件在核心技术、产业链创新和生态建设等方面创…...
《C++PrimePlus》第9章 内存模型和名称空间
9.1 单独编译 Visual Studio中新建头文件和源代码 通过解决方案资源管理器,如图所示: 分成三部分的程序(直角坐标转换为极坐标) 头文件coordin.h #ifndef __COORDIN_H__ // 如果没有被定义过 #define __COORDIN_H__struct pola…...
FFmpeg常用命令讲解及实战二
文章目录 前言一、ffmpeg 常用命令1、ffmpeg 的封装转换2、ffmpeg 的编转码3、ffmpeg 的基本编转码原理 二、ffprobe 常用参数1、show_format2、show_frames3、show_streams4、print_format5、select_streams 三、ffplay 的常用命令1、ffplay 常用参数2、ffplay 高级参数3、ffp…...
Django之Cookie与Session,CBV加装饰器
前言 会话跟踪技术 在一个会话的多个请求中共享数据,这就是会话跟踪技术。例如在一个会话中的请求如下: 请求银行主页; 请求登录(请求参数是用户名和密码);请求转账(请求参数与转账相关的数…...
定时发朋友圈怎么发?
...
nodejs 将word转为pdf office-to-pdf
jspdf用于html转pdf。需借助html2canvas遍历页面中的dom节点,渲染成canvas image,再用jspdf把图片转为pdf。office-to-pdf 用于word转pdf。依赖于libreOffice,需提前安装 mac安装libreOffice 1.首先需要jdk8,并配置环境变量 2.再就是需要安装libreOf…...
12.docker的网络-host模式
1.docker的host网络模式简介 host模式下,容器将不会虚拟出自己的网卡、配置IP等,而是使用宿主机的IP和端口;也就说,宿主机的就是我的。 2. 以host网络模式创建容器 2.1 创建容器 我们仍然以tomcat这个镜像来说明一下。我们以h…...
如何在外部数据库中存储空间化表时使用Mapinfo_mapcatalog
开始创建地图目录表之前 您将使用EasyLoader在要使用的数据库中创建地图目录表。EasyLoader与MapInfo Pro一起安装。 (工具“DBMS_Catalog”不再随MapInfo Professional 64位一起提供,因为它的功能可以在EasyLoader工具中找到。) 注&…...
S32K344 Flash Driver实战:手把手教你用C40_Ip库实现任意字节写入与扇区解锁
S32K344 Flash驱动深度实战:突破C40_Ip库8字节对齐限制的工程解决方案 从真实案例看Flash驱动的工程挑战 去年在为某新能源车厂开发OTA升级功能时,我们团队遇到了一个典型的嵌入式开发困境:S32K344微控制器的官方Flash驱动库C40_Ip强制要求所…...
ComfyUI InstantID:AI人脸风格迁移的终极指南与完整教程
ComfyUI InstantID:AI人脸风格迁移的终极指南与完整教程 【免费下载链接】ComfyUI_InstantID 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_InstantID ComfyUI InstantID是一款革命性的AI人脸风格迁移工具,它为ComfyUI用户提供了原生In…...
3步搞定百度网盘提取码:baidupankey智能查询工具终极指南
3步搞定百度网盘提取码:baidupankey智能查询工具终极指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘资源下载卡在提取码环节而烦恼吗?baidupankey是一款专业的百度网盘提取码智能查…...
解锁数字记忆:用m4s-converter为B站缓存视频赋予新生
解锁数字记忆:用m4s-converter为B站缓存视频赋予新生 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 在数字内容如潮水般涌动的时代&…...
KrkrzExtract技术解析:krkrz引擎资源解包解决方案架构与实践
KrkrzExtract技术解析:krkrz引擎资源解包解决方案架构与实践 【免费下载链接】KrkrzExtract The next generation of KrkrExtract 项目地址: https://gitcode.com/gh_mirrors/kr/KrkrzExtract KrkrzExtract是一款专为krkrz游戏引擎设计的资源解包工具&#x…...
FLUX.1-Krea-Extracted-LoRA快速上手:bash /root/start.sh启动原理与日志查看方法
FLUX.1-Krea-Extracted-LoRA快速上手:bash /root/start.sh启动原理与日志查看方法 1. 模型概述 FLUX.1-Krea-Extracted-LoRA 是一款基于 FLUX.1-dev 基础模型的真实感图像生成模型,通过提取的 LoRA 风格权重为图像注入专业摄影级别的真实感美学。该模型…...
解码AMD处理器底层控制:从硬件黑盒到透明调优的演化之路
解码AMD处理器底层控制:从硬件黑盒到透明调优的演化之路 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://…...
基于OpenAI CUA构建AI自动化任务:从原理到实践
1. 项目概述与核心价值最近在折腾AI驱动的自动化任务,特别是让AI模型直接操作浏览器完成一些重复性工作,OpenAI官方开源的openai-cua-sample-app项目就成了一个绝佳的参考。这个项目本质上是一个演示应用,展示了如何通过OpenAI的Responses AP…...
QueryExcel技术解密:多Excel文件并行检索工具深度解析与实战指南
QueryExcel技术解密:多Excel文件并行检索工具深度解析与实战指南 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 在现代企业数据管理中,Excel文件作为最常见的数据存储格式之一…...
AUTOSAR BswM模块深度解析:从“模式仲裁”到“动作列表”,如何像搭积木一样设计汽车ECU的大脑?
AUTOSAR BswM模块深度解析:从“模式仲裁”到“动作列表”,如何像搭积木一样设计汽车ECU的大脑? 在汽车电子架构的演进中,AUTOSAR标准扮演着至关重要的角色。作为这一标准中的核心模块之一,BswM(Basic Softw…...
