完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
小弟目前再弄UCOSIII,在CAN总线接收上面遇到了难题,肯定各位帮帮忙,指点指点迷津!具体现象是,连续下发4个不同的报文,任务处理函数中串口打印出的数据只有第1条和第4条,并且第四条打印了3次,总的报文数是对的,但就是第2、3条报文没有,第4条报文多了两次。使用任务内消息和消息列表现象都一样。下面是主要的两个函数
在CAN接收中断中: extern OS_TCB Can1TaskTCB; extern OS_TCB Can2TaskTCB; extern OS_FLAG_GRP EVENTFLAH_GRP; void CAN1_RX0_IRQHandler(void) { OS_ERR err; static uint8_t i=0,j=0; static uint8_t *can1buf[8]; OSIntEnter(); can1buf[j]=mymalloc(SRAMIN,8); CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); //for(i=0;i<8;i++) //{ can1buf[j] = (uint8_t*)RxMessage.Data; //} /* 发布任务消息到任务 AppTaskUsart */ // OSTaskQPost ((OS_TCB *)&Can1TaskTCB, //目标任务的控制块 // (void *)can1buf[j], //消息内容的首地址 // (OS_MSG_SIZE )8, //消息长度 // (OS_OPT )OS_OPT_POST_FIFO, //发布到任务消息队列的入口端 // (OS_ERR *)&err); //返回错误类型 OSQPost ((OS_Q* )&CAN1_QUEUE, (void* )can1buf[j], (OS_MSG_SIZE )8, (OS_OPT )OS_OPT_POST_FIFO, (OS_ERR* )&err); j++; if(j==8) j=0; OSIntExit(); //退出中断 } 在CAN任务处理控制块中 void can1_task(void *p_arg) { OS_ERR err; uint8_t *p,i; OS_MSG_SIZE size; p_arg = p_arg; while(1) { // p = OSTaskQPend ((OS_TICK )0, //无期限等待 // (OS_OPT )OS_OPT_PEND_BLOCKING, //没有消息就阻塞任务 // (OS_MSG_SIZE *)&size, //返回消息长度 // (CPU_TS *)0, //返回消息被发布的时间戳 // (OS_ERR *)&err); //返回错误类型 p = OSQPend ((OS_Q* )&CAN1_QUEUE, (OS_TICK )0, (OS_OPT )OS_OPT_PEND_BLOCKING, (OS_MSG_SIZE* )&size, (CPU_TS* )0, (OS_ERR* )&err); for(i=0;i<8;i++) { printf("%c",*p++); } myfree(SRAMIN,p); //释放内存 GPIO_ResetBits(GPIOC,GPIO_Pin_1); OSTimeDlyHMSM ((CPU_INT16U )0, (CPU_INT16U )0, (CPU_INT16U )1, (CPU_INT32U )0, (OS_OPT )OS_OPT_TIME_HMSM_NON_STRICT, (OS_ERR* )&err); } } |
|
相关推荐
1个回答
|
|
发完整程序,can的配置文件一起
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
657 浏览 0 评论
2334 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2137 浏览 3 评论
4767 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2282 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 09:04 , Processed in 0.477987 second(s), Total 71, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号