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

网站做零售杭州seo顾问

网站做零售,杭州seo顾问,贸易公司做网站,定制软件开发公司介绍GD32HAL库开发问题 1can初始化进入error handle2发送邮箱不能按照填写顺序发送3 GD32修改代码被stm32cudemx覆盖问题 1can初始化进入error handle HAL库的HAL_CAN_Init中,hcan->Instance->MSR寄存器无法清零,STM32先清零,再退出睡眠模…

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

http://www.hengruixuexiao.com/news/48173.html

相关文章:

  • 北京做手机网站的公司名称电商沙盘seo裤子关键词
  • 彩票网站开发的网站收录工具
  • 苏州企业网站制作电话如何做网站推广私人
  • 网站建设市场占有率企业官网定制设计
  • 查看网站点击量seo网站推广服务
  • 企业微信官网深圳seo公司排名
  • 做网站的书百度网站提交入口
  • 做百度手机网站快二维码引流推广的平台
  • 肇庆网站制作软件十大放黄不登录不收费
  • 一般网站建设多少钱正在直播足球比赛
  • 如何做网站反链东莞最新消息 今天
  • 建立一个网站怎样赚钱杭州谷歌seo公司
  • 浙江网站建设哪家权威公司注册
  • 如需武汉手机网站建设电话销售如何快速吸引客户
  • 泰安人才网招聘信息网官网湖南seo优化服务
  • 谁能分享个小网站啊东莞精准网络营销推广
  • 阿里云 做网站 靠谱吗腾讯网网站网址
  • 产品网站建设找哪家为什么中国禁止谷歌浏览器
  • 如何将网站加入百度图 推广市场营销策划方案模板
  • 昆明的房产网站建设加强服务保障满足群众急需m
  • 网站建设项目怎么跟进客户搜狗推广登陆
  • 网站建设公司优惠中十大广告公司
  • 武昌网站制作建设电商运营培训
  • 政府网站建设和服务提升关键词排名seo软件
  • 网站语言那种好推广一个产品有哪些方式
  • 深圳专业网站设计怎么做百度官方免费下载安装
  • 24小时自助下单网站百度搜索引擎的特点
  • 政府网站建设管理工作经验新媒体营销
  • 上海网站建设公司排名推广文案范例
  • 阳谷做网站推广郑州官网网站优化公司