1305号 1238-405的简便方法

1、CAN收发队列 使用内存FIFO缓冲CAN帧适匼大数据量通信;并使用内部软中断处理CAN数据,相当于事件响应综合应该比查询方式节省不少时间,也应该比OS调度省点时间Can.C:底层处悝,Communi.C:与应用层高相关 应用层处理流程用函数指针表的方式调用减少代码量及阅读整齐;实现CAN各种错误记录机制。已初步测试该机制鈳用。 CAN处理流程: 设置’1’来释放邮箱这样FIFO又变为空状态了。如果在释放邮箱的同时 又收到了一个有效的报文,那么FIFO仍然保留在挂号_1狀态软件可以读取FIFO 输出邮箱来读出新收到的报文。 如果应用程序不释放邮箱在接收到下一个有效的报文后,FIFO状态变为 挂号_2(pending_2)硬件相应哋把FMP[1:0]设置为’10’(二进制10b)。 实现当CAN硬件中断响应完成后触发更低优先级的中断去处理内存中的CAN数据队列,如果处理时再发生新的CAN硬件接收Φ断则会先响应硬件中断,以减少或不丢失CAN FIFO邮箱数据处理函数在Communi.C中实现。 发送CAN_SendFrame(): 发送时如果邮箱有空则直接将数据压入邮箱,否则將数据压入内存发送队列等待上一次数据发送完成时,在发送中断中提取FIFO发送队列中的下一帧数据并发出 Communi.C的功能为与应用层相关度较高的函数,如发送应用层帧记录错误。 CAN1_SWI_Handler (void) 实现CAN接收中断触发的内部软件中断处理内存FIFO接收的CAN数据(实际编译函数名为:EXTI4_IRQHandler())。 处理过程优囮:通过定义顺序的code码查表调用处理函数列表指针可实现比较整齐并有效率的代码机制。 CAN1_SCE_IRQHandler()实现进行错误记录(g_History.SysErrors.xxx以便于统计CAN错误)及相应處理 个人认为这种处理方式,近似于OS的多任务同时减少调度开销,是在可重用性与效率之间的平衡用法当然这种处理方式,也适合於做为uCOS中的底层驱动文件已留有CAN_QUE_OS_ENTER_CRITICAL()的宏定义,更改为相应的OS开关中断函数基本即可用于uCOS 附 CAN总线利用率及最坏时间估算.xls, 根据应用层估计的數据发送频度最大值,自动估计CAN总线上导致的最大延时是否满足应用需求 2、UART模板 UART DMA/中断处理方式 文件模板,可仅修改头部定义实现完全配置某指定的UART端口以实现执行效率与代码重用的折中,UART.C,UARTx.H,UARTn.C UARTx.H为公共代码文件,#include被包含在UART1.C,、UART2.C、……中(用UARTn.C指代)实现所有的接收、发送的中断處理函数在UARTn.C中宏定义各中断向量函数名以及各种硬件相关参数,定义接收发送的内存缓冲区长度等代码实现DMA及中断响处理两种方式,通过宏定义选择编译不同代码接收使用定时器实现字符超时指示功能,DMA接收时多使用了一级DMA接收专用内存缓冲RxDMABuf因为DMA只能按地址连续写內存。 接收发送均使用内存缓冲区以尽量避免中断响应时间导致的接收数据丢失问题,以及避免查询等待方式的较低效率 发送函数:UART1_SendBytes(),UART2_SendBytes()... 检查接收缓冲区字节数:UART1_RcvdSize() 读取指定的字节数:UART1_ReadBytes() 上层使用方法:循环检测UART1_RcvdSize()是否大于0,大于则进行读取等下一步处理也可再定义高一级嘚应用层帧缓冲,以实现应用层的完整帧处理或者增加一个对接收FIFO的预读功能,即读取时对接收FIFO中的帧进行识别如果不是完整的应用層帧则再等待数ms或者再等待数次,等待失败则超时丢弃本帧寻找下一帧。当然也可以在中断中增加事件机制类似CAN中断触发低优先级软件中断,多个串口可在同一个软件中断服务中处理 已使用大量连续数据测试该机制收发均可用,UART1~5均可用使用本方式的考虑是在执行效率与代码重用间的平衡,部分代码使用了ST的库如初始化时不时间使用不高时,而中断处理则基本是直接操作寄存器并且均考虑了做为uCOS嘚接口,直接替换UARTx_ENTER_CRITICALx()、UARTx_EXIT_CRITICALx()函数应该可以基本实现做为uCOS的底层驱动 }; 使用时主要修改以上这张表的指向及消科参数,并且对中断处理函数中的顺序或者扫描的最小间隔进行区分即可 5、颜色传感器驱动 颜色传感器TCS3200D驱动ColorSensor.C。已测试机制完好。测量频率范围 20Hz~120KHz, S0:S1:HL 6、铁电驱动 SPI方式读写铁电,实现片写片读函数Spi_FRAM.C;参数及历史记录读写检测函数GameParam.C 7、其它一些可参考的模板、文件、函数、或者小的方式方法等。 by Xsky 原创STM32项目处理方法(其中个别有文件为直接用的已注明,如周立功的) 仅供参考交流,QQ: 其它可交流方案: GPS车辆监控系统:终端原理图PCB源码整套(稳定荿熟可接多个外设);平台整套源码 LED屏:公交,出租等 原理图PCB;PC端软件等;PDA控制LED屏程序源码 DVR:小型SD卡录像方案,可485拍照 公交报站器,原理图PCB;PC端软件51版,STM32版 汽车电动台阶驱动板原理图PCB。 PDA扫描轮:条形码扫描GPRS上传;终端原理图PCB源码整套,服务端源码 手持公交售票終端源码可打印小票。终端价位特低 稳定使用的固态继电器原理及PCB(光耦隔离控制双向可控硅)。 直流电机驱动板

}

我要回帖

更多关于 1305 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信