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工具中找到。) 注&…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...
【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...
Element-Plus:popconfirm与tooltip一起使用不生效?
你们好,我是金金金。 场景 我正在使用Element-plus组件库当中的el-popconfirm和el-tooltip,产品要求是两个需要结合一起使用,也就是鼠标悬浮上去有提示文字,并且点击之后需要出现气泡确认框 代码 <el-popconfirm title"是…...
【AI News | 20250609】每日AI进展
AI Repos 1、OpenHands-Versa OpenHands-Versa 是一个通用型 AI 智能体,通过结合代码编辑与执行、网络搜索、多模态网络浏览和文件访问等通用工具,在软件工程、网络导航和工作流自动化等多个领域展现出卓越性能。它在 SWE-Bench Multimodal、GAIA 和 Th…...
