登录
首页 » 嵌入式芯片 » 绝对原创,开源一STM32项目,CAN,UART,Input检测 原创相对高效性能与代码重用平衡思路(缓冲队列加软中断),可直接做工程模板

绝对原创,开源一STM32项目,CAN,UART,Input检测 原创相对高效性能与代码重用平衡思路(缓冲队列加软中断),可直接做工程模板

于 2022-03-21 发布 文件大小:1.27 MB
0 358
下载积分: 2 下载次数: 2

代码说明:

1、CAN收发队列   使用内存FIFO缓冲CAN帧,适合大数据量通信;并使用内部软中断处理CAN数据,相当于事件响应,综合应该比查询方式节省不少时间,也应该比OS调度省点时间。Can.C:底层处理,Communi.C:与应用层高相关。 应用层处理流程用函数指针表的方式调用减少代码量及阅读整齐;实现CAN各种错误记录机制。已初步测试,该机制可用。   CAN处理流程:     接收:CAN1_RX0_IRQHandler_Name (void), CAN1_RX1_IRQHandler(void)           接收中断,CAN_QueueWriteQuick()将当前的有效报文压入内存FIFO,压入的数据为整个CAN邮箱数据,所以后续的处理函数可以分辨出完整的数据。 void CAN1_RX0_IRQHandler_Name (void) // CAN1_RX0_IRQHandler_Name { /* FIFO从空状态开始,在接收到第一个有效的报文后,FIFO状态变为挂号_1(pending_1), 硬件相应地把CAN_RFR寄存器的FMP[1:0]设置为’01’(二进制01b)。 软件可以读取FIFO输出邮箱来读出邮箱中的报文,然后通过对CAN_RFR寄存器的RFOM位 设置’1’来释放邮箱,这样FIFO又变为空状态了。如果在释放邮箱的同时, 又收到了一个有效的报文,那么FIFO仍然保留在挂号_1状态,软件可以读取FIFO 输出邮箱来读出新收到的报文。 如果应用程序不释放邮箱,在接收到下一个有效的报文后,FIFO状态变为 挂号_2(pending_2),硬件相应地把FMP[1:0]设置为’10’(二进制10b)。 重复上面的过程,第三个有效的报文把FIFO变为挂号_3状态(FMP[1:0]=11b)。 此时,软件必须对RFOM位设置1来释放邮箱,以便FIFO

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 常用ARM指令集及汇编
    常用ARM指令集及汇编-commonly used ARM instruction set and compilation
    2022-03-19 04:39:20下载
    积分:1
  • spi driver
    spi总线驱动,在8bit mcu上调试通过。 spi总线控制方便,效率很高。
    2022-03-07 09:05:53下载
    积分:1
  • arm lpc2300定时器设计源码 实现lpc2300的定时控制
    arm lpc2300定时器设计源码 实现lpc2300的定时控制-timer
    2022-04-12 13:32:43下载
    积分:1
  • S5PV210内核移植:linux内核输子系统-buttons_keyboard
    S5PV210芯片内核移植:linux内核输入子系统:Tiny210v2底板上面有八个按键,但是官方只提供了该按钮的驱动,并没有实现输入子系统,使得板上的八个按钮没有任何作用。这里就通过向内核添加该buttons的输入子系统驱动,使该八个按钮实现如普通键盘的键值功能,实现能上下左右,以及确认等功能,就像手机的音量键、关机键一样。
    2022-10-03 05:05:03下载
    积分:1
  • 俄罗斯方块hg12684自己的程序,测试使用,凯尔发展
    HG12684 俄罗斯方块程序 自编的,测试好用,KILE开发的-Tetris HG12684 own procedures, and test use, KILE development
    2022-01-26 03:30:36下载
    积分:1
  • LPC2124AD interface experiments, and to share with you!
    LPC2124AD接口实验,和大家分享!-LPC2124AD interface experiments, and to share with you!
    2022-09-07 13:15:02下载
    积分:1
  • Necessary to optimize the level of s, other optimization levels will not lead to...
    优化级别必需为s,其他优化级别也不会导致编译时出错,但会导致运行时出错。原因涉及局部变量分配堆栈处理方式不同,也就是OS_CPU_A.c那个文件中的移植部分。还有就是其他优化涉及的中断自动保存寄存器的数量有所出入。-Necessary to optimize the level of s, other optimization levels will not lead to compile-time error, but it will result in run-time error. Reasons relating to the allocation of local variables, stack processing in different ways, that is, OS_CPU_A.c that the transplanted parts of the file. There are other optimization related to the interruption of the number of registers saved automatically have access to.
    2022-08-10 01:29:05下载
    积分:1
  • stm32红外遥控
    应用背景红外遥控的编码目前 红外遥控的编码目前 红外遥控的编码目前 红外遥控的编码目前 广泛使用的是: 广泛使用的是: 广泛使用的是: NEC Protocol 的PWM(脉冲宽度调制)和Philips RC-5 Protocol 的PPM(脉冲位置调制)。ALIENTEK战舰STM32开发板配套的遥控器使用的是NEC协议,其特征如下: 1、8位地址和8位指令长度; 2、地址和命令2次传输(确保可靠性) 3、PWM脉冲位置调制,以发射红外载波的占空比代表“0”和“1”; 4、载波频率为38Khz; 5、位时间为1.125ms或2.25ms;关键技术本实验采用定时器的输入捕获功能现红外解码, :开机在LCD上显示一些信息之后,即进入等待红外触发,如过接收到正确的红外信号,则解码,并在LCD上显示键值和所代表的意义,以及按键次数等信息。同样我们也是用LED0来指示程序正在运行。
    2022-04-02 00:36:10下载
    积分:1
  • arm2410测试
    arm2410测试-arm2410 test
    2022-03-18 23:29:18下载
    积分:1
  • ATMEL at91系列arm的官方驱动,串口等常用的都测试过了,很好,还有很多实例。已经应用在一个项目中了。...
    ATMEL at91系列arm的官方驱动,串口等常用的都测试过了,很好,还有很多实例。已经应用在一个项目中了。-ATMEL at91 series arm of the official driver, serial port, such as commonly used are tested, and very good, there are many examples. Has been used in a project in the.
    2022-01-26 07:55:33下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载