打印
[STM32F4]

最新CUBEMX的HAL的CAN总线配置接受发送(STM32F412)

[复制链接]
楼主: 焊丝滚成球
手机看帖
扫描二维码
随时随地手机跟帖
61
houcs| | 2023-7-3 23:33 | 只看该作者 回帖奖励 |倒序浏览
我自己用最新的cubemx生成就不行

使用特权

评论回复
62
liuzaiy| | 2023-7-3 23:34 | 只看该作者
我发现执行HAL_CAN_AddTxMessage 时卡死了。

使用特权

评论回复
63
yinxiangh| | 2023-7-3 23:35 | 只看该作者
能不用HAL 就还是使用常规的BSP库比较好!

使用特权

评论回复
64
pangb| | 2023-7-3 23:38 | 只看该作者
huanghuac 发表于 2023-7-3 23:23
HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, CAN_TxHeaderTypeDef *pHeader, uint8_ ...

对啊  我就发现走到这里死掉了。

使用特权

评论回复
65
chenjunt| | 2023-7-3 23:39 | 只看该作者
自己定义一个字节数组再把数组地址代替CAN_TX_MAILBOX0传进去就一切正常了

使用特权

评论回复
66
ousj| | 2023-7-3 23:41 | 只看该作者
一开始我也是参考这段代码后来发现发送总是进错误中断。

使用特权

评论回复
67
morrisk| | 2023-7-3 23:42 | 只看该作者
一点点排查,发现CAN_TX_MAILBOX0只是一个宏,且值为0x00000001 我没看懂楼主为什么把这个强制转换成地址再传进去的意义。

使用特权

评论回复
68
zyf部长| | 2023-7-3 23:43 | 只看该作者
但是自己定义一个字节数组再把数组地址代替CAN_TX_MAILBOX0传进去就一切正常了

使用特权

评论回复
69
xxmmi| | 2023-7-3 23:44 | 只看该作者
参考ST官方的例程啦!

虽然我没完全调通,按照ST来就没问题了。

使用特权

评论回复
70
kangzj| | 2023-7-3 23:45 | 只看该作者
HAL_CAN_AddTxMessage(&hcan,&TxMessage1,TR_BUF,(uint32_t*)CAN_TX_MAILBOX0)
对,就是最后参数(uint32_t*)CAN_TX_MAILBOX0的问题;要设一个变量传进来;
我发送可以了,但又接收又接收不到,没时间研究了,于是我就用来了低版本的HAL库(1.6);cubemx我也用回了低版本的了,真是悲催啊!

使用特权

评论回复
71
lium| | 2023-7-3 23:47 | 只看该作者
CAN_TX_MAILBOX0  这个换成CAN_TX_MAILBOX1  就不会进hardfaul  不解

使用特权

评论回复
72
guoyt| | 2023-7-3 23:48 | 只看该作者
是的,我把0改成1 用的回环模式就正常了

使用特权

评论回复
73
hanwe| | 2023-7-3 23:49 | 只看该作者

1、使用新版HAL库中的HAL_CAN_AddTxMessage发送就死机看库文件注释中有说明

/**
  * @brief  Add a message to the first free Tx mailbox and activate the
  *         corresponding transmission request.
  * @param  hcan pointer to a CAN_HandleTypeDef structure that contains
  *         the configuration information for the specified CAN.
  * @param  pHeader pointer to a CAN_TxHeaderTypeDef structure.
  * @param  aData array containing the payload of the Tx frame.
  * @param  pTxMailbox pointer to a variable where the function will return
  *         the TxMailbox used to store the Tx message.
  *         This parameter can be a value of @ARG CAN_Tx_Mailboxes.
  * @retval HAL status
  */
这个是因为楼主发送函数的参数写错了,最后一个参数,要自己定义一个变量,然后取地址使用
楼主的是:
HAL_CAN_AddTxMessage(&hcan1,&TxMessage1,TR_BUF,(uint32_t*)CAN_TX_MAILBOX0);
修改为:
int my_pTxMailbox;
HAL_CAN_AddTxMessage(&hcan1,&TxMessage1,TR_BUF,(uint32_t*)&my_pTxMailbox)

这里面的最后一个参数就相当于一个返回值之类的

使用特权

评论回复
74
yufe| | 2023-7-3 23:50 | 只看该作者
无法接收不仅接收中断
2.1检查一下是否使用了楼主的打开中断
2.2检查一下是否开启的过滤器

使用特权

评论回复
75
llia| | 2023-7-3 23:52 | 只看该作者
STM32HAL库写CAN通信程序最近遇到了难题

使用特权

评论回复
76
wangpe| | 2023-7-3 23:53 | 只看该作者
在STM32CubeMX中,STM32F207如何对CAN进行配置

使用特权

评论回复
77
langgq| | 2023-7-3 23:54 | 只看该作者
STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。

使用特权

评论回复
78
wangzsa| | 2023-7-3 23:55 | 只看该作者
stm32cubemx生成项目文件如何和keil一起

使用特权

评论回复
79
zhuww| | 2023-7-3 23:57 | 只看该作者
STM32系列兼容性高。尤其跟STM32CUBEMX工具配合得好

使用特权

评论回复
80
zhanglli| | 2023-7-3 23:57 | 只看该作者
用STM32CubeMX怎么配置CAN接收中断

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则