-
绝对原创,开源一STM32项目,CAN,UART,Input检测 原创相对高效性能与代码重用平衡思路(缓冲队列加软中断),可直接做工程模板
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
- 2022-03-21 07:31:29下载
- 积分:1
-
2812的tcpip程序C语言的,应该有用的!
2812的tcpip程序C语言的,应该有用的!-2812 of the C language tcpip process, it should be useful!
- 2022-08-02 18:01:05下载
- 积分:1
-
用LPC213X系列的PWM来产生语音。语音数据来源于PC机转换后得到的。最大可以是16位的。
由于是PWM所以输出端口需要低通滤波才能够得到比较干净的声音...
用LPC213X系列的PWM来产生语音。语音数据来源于PC机转换后得到的。最大可以是16位的。
由于是PWM所以输出端口需要低通滤波才能够得到比较干净的声音。
可以经过修改使用LPC2132以上的ARM的D/A来产生。
This project outputs audio on PWM0 using wave samples that are stored in the on-chip Flash ROM. -LPC213X series used to generate the PWM voice. Voice data from the PC after the conversion. It is the largest of 16. Because there is PWM output ports need low-pass filter can be relatively clean voice. It has been modified over the use LPC2132 ARM D/A to produce. This project outputs audio on PWM0 using wave samples that are stored in the on-chip Flash ROM.
- 2023-01-09 20:35:04下载
- 积分:1
-
周立功ZLG_LPC213X的全套资料,这个是其中的SPI
周立功ZLG_LPC213X的全套资料,这个是其中的SPI-Week Ligong ZLG_LPC213X a complete set of information, this is one of the SPI
- 2022-06-21 08:40:33下载
- 积分:1
-
简易的EASYARM1138蜂鸣器发声程序
简易的EASYARM1138蜂鸣器发声程序-Easy EASYARM1138 buzzer sound procedures for
- 2022-03-28 11:31:50下载
- 积分:1
-
诺基亚的手机上都有这个游戏,现在我把它移到ARM上来的,没有手机照样能玩。用ARM_SDT2.51开发的嵌入在ARM里....
诺基亚的手机上都有这个游戏,现在我把它移到ARM上来的,没有手机照样能玩。用ARM_SDT2.51开发的嵌入在ARM里.-Nokia mobile phones have this game and now I moved it onto the ARM, no phone can still play. ARM_SDT2.51 used in the development of embedded ARM Lane.
- 2022-10-23 03:35:04下载
- 积分:1
-
ZLG开发板上关于读写CF卡的代码,带有文件系统
ZLG开发板上关于读写CF卡的代码,带有文件系统-ZLG development board on the CF card read and write code, with file system
- 2022-06-16 16:47:21下载
- 积分:1
-
at91rm9200的用户手册,内含windows下超级终端和linux下minicom的配置应用...
at91rm9200的用户手册,内含windows下超级终端和linux下minicom的配置应用-AT91RM9200 user manual contains HyperTerminal under windows and under linux the configuration of the application of MINICOM
- 2022-03-07 14:28:04下载
- 积分:1
-
bios source code
bios源码-bios source code
- 2022-07-05 10:44:18下载
- 积分:1
-
avr的UART库
可以使用此库,来传输和接收数据通过内置的 UART。
*
* UART 已完成传输时,便会产生中断或
* 接收一个字节。中断处理例程使用循环缓冲区
* 为缓冲接收和传输的数据。
*
* UART_RX_BUFFER_SIZE 和 UART_TX_BUFFER_SIZE 的常量定义
* 以字节为单位的环形缓冲区的大小。请注意这些常量必须是 2 的幂。
* 您可能需要通过添加适应此常量到你们的目标,您的应用程序
* CDEFS + =-DUART_RX_BUFFER_SIZE = nn-DUART_RX_BUFFER_SIZE = nn 您的生成文件。
*
* @note 基于 Atmel 应用注 AVR306
彼得 · 弗勒里 pfleury@gmx.ch http://jump.to/fleury * @author
- 2023-04-17 00:50:03下载
- 积分:1