- 博客(14)
- 收藏
- 关注
原创 数据截断问题
先描述现象:在使用串口中断接收数据时,在串口中断中把接收到的字节数,通过队列的方式传递给其他任务做解析,串口中断中明明接收到了数据,并且把data_size写入了队列,但是在任务函数中,能进入if的条件内的代码,但是接收到的data_size是0.问题就出在,接收到的数据超过了uint8_t的大小,高字节被截断了,所以就出现了,队列明明接收到了数据,但是接收到的数据是0。解决方法:改用 16 位变量存放长度。以上是串口中断中的代码。以上是任务函数中的代码。
2025-05-26 15:19:17
238
原创 canfestival协议栈使用writeNetworkDictCallBack发送SDO有问题
因为从机发给主机的报文都是通过canDispatch来分发给协议栈的,然后我就在state.c中的canDispatch中打断点,发现确实接收到了ID为0x581的报文。在使用writeNetworkDictCallBack函数发送SDO时,主机已经发出了ID为0x601的SDO,而且从机也回复了ID为0x581的SDO。在proceedSDO内部有这样两端段代码判断是否是对应的服务器反馈的SDO与客户端反馈的SDO。然后我就去看我用上位机生成的字典文件发现原来是客户端的ID写错了。
2025-04-08 16:57:57
383
原创 Canfestival移植问题
第二个问题就是我在主机字典中配置好TPDO后,发现只能发送部分的TPDO,比较靠后面的ID发送不了,刚开始以为是被仲裁掉了,后来想想我发送TPDO仲裁个毛啊,后来又怀疑是事件时间与禁止时间设置的不对,查看后没什么问题,因为TPDO是和软件定时器相关,后来排查是否是定时器没有触发,但是定时器触发和我们应该没什么关系。还有个小问题,我设置的TPDO的事件时间是20ms,但是CAN盒子上抓到的时间间隔却不是准确的20ms,目前问题还没有发现解决的办法。把定时器的数量增大到30后,能够正常发送所有的TPDO。
2025-03-30 22:39:44
322
原创 CAN发送不了数据
进入HAL_CAN_AddTxMessage内部逐步debug,发现函数在这里返回了HAL_CAN_ERROR_NOT_INITIALIZED。顺藤摸瓜,在HAL_CAN_AddTxMessage函数最开始的时候,这个状态就被赋值未为0x05了。在函数内部调用完HAL_CAN_AddTxMessage函数返回HAL_ERROR。最后通过打断点的方式判断到,是在这里被赋值为HAL_CAN_STATE_ERROR。后来再去查看原理图,发现原来这里有个跳线帽,接上跳线帽后,就能正常发送了。
2025-03-23 10:55:43
280
原创 FreeRTOS事件集合问题
问题描述:有两个任务A、B发送事件,一个任务C阻塞等待事件,两个任务A、B已经发送了对应的事件,但是任务C并没有等到到对应事件,而且并没有阻塞等待设定时间,就返回了osErrorTimeout。
2025-03-14 14:28:36
441
原创 串口DMA通讯BUG
只是把需要发送的数据地址搬运到DMA的发送区域,然后就不管了。由于整个任务的时间间隔为1ms,所以当把数据搬运到DMA发送区域后还未完成发送,就又通过memset(gUpper_com_send_buf,0,sizeof(gUpper_com_send_buf));此任务想实现按频率发送指定数据包,bug问题就在于每次while循环刚开始的时候都会把指定数据区域清零,memset(gUpper_com_send_buf,0,sizeof(gUpper_com_send_buf));
2025-02-22 09:46:18
258
原创 ubuntu 在本地通过ssh拷贝文件到另外一台机器
scp -r ./chassis_control/ lz@192.168.22.248:/home/lz/LZ_agv/src
2025-02-10 10:33:09
172
原创 ubuntu装系统
解决:在选择ubuntu和windows时,选中ubuntu按E,在splash后面加nomodeset。安装ubuntu时,会发生屏幕突然黑了。
2025-02-07 17:47:03
140
原创 ubuntu装系统
boot 500MB 启动系统用的(需要选择安装启动引导器设备)/swap 10240MB 内存交换分区(内存大的话可不用开辟这个分区)/ 剩下的都交给根目录。
2025-02-07 17:40:57
121
原创 代码重定向
在工作用遇到一个问题,使用的板子是STM32F767,开发环境是STM32CubeIDE,有两块RAM和一块Flash,因为功能的需要有特别多的全局变量数组,导致其中一块RAM满了,如下图STM32F767IGT6内存图所示,这个是由STM32CubeIDE自动生成的,当我添加新的任务时,编译不通过,才发现了这个问题修改链接文件STM32F767IGTX_FLASH.ld,在工程目录的STM32CubeIDE文件夹下做了以下修改,待测试/*._user_heap_stack :{. = ALIGN
2024-12-13 14:03:07
961
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅