第一行定义存储CAN模块信息的结构体,第二行与第三行定义存储CAN节点信息的结构体,第四行定义存储can报文消息的结构体(这些结构体里面分别存储着,第一行存储着can模块的寄存器,第二行存储着can节点的寄存器,第四行存储着can报文(消息体)的寄存器)。下面操作中的最后一步都是将配置好的参数导入寄存器。
这是对can模块的初始化,第一行定义CAN配置的结构体,第二行将can的默认配置参数导入,下面配置CAN的中断优先级,最多设置16个,并设置中断服务的cpu为0,1或2
这是对CAN四个节点的初始化,此处以CAN0节点为例子,第一行设置一个结构体存储can0节点的数据,第二行将默认配置参数导入,第三行配置波特率第四行配置选择节点0(共四个,就是四路can),接着配置can的发送接收引脚,最后将配置完的参数导入最开始时设置的can节点结构体
这里设置的是CAN接收报文初始化,第一行先设置一个结构体用于存储CAN报文的信息,第二行静默人的报文信息存入结构体第三行设置用的是256个报文中的哪一个,接着设置ID,(第五行设置的为1表示设置的ID起作用,为0,ID是1和0都起作用好像是,一般都设置成0xFFFFFFFF,只看设置的ID判断是否接收报文就行)。第六行设置接收还是发送消息体,第11行设置要与第二图中的节点配合使用,第11选择哪个节点,就需要在图2中设置相应的优先级。倒数第二行是对256条报文的初始化设置,最后一行程序就是为了将第二张图中设置的优先级与下图中的中断结合。
最后还有一个问题这个中断优先级是用来作什么的呢
优先级数字越大,优先级越高,婷婷姐说的
0是四个节点中的0节点
四个节点指的四路CAN
16个中断(是每个节点有16个吗,一共64个?)
256个报文缓冲区