基于STM32F103C8t的CAN通讯实例(带程序注释)

2019-12-09 20:00发布

这个实例的板子和程序均为个人兴趣所做,测试已经通过,但是难免有所问题,如有错误和能够完善的地方,希望和大家相互学习。
整体构思:这套小板是为了通过I/O口低电压系统(3.3V)隔离驱动高电压系统(24V),实现MCU对24V电压输出的有无控制,低电压系统对高电压系统的隔离驱动控制是通过光耦来实现的,MCU的I/O输出0V时,光耦导通,对应接口输出24V。
(实际测试时已经通过硬件结构使每个I/O口对应一个小灯,MCU的I/O输出0V时,对应接口输出24V,小灯点亮;MCU的I/O输出3.3V时,对应接口输出0V,小灯熄灭)。
2.PNG (6.31 KB, 下载次数: 17) 下载附件 2013-11-27 13:57 上传
3. 关于接收数据的处理。因为在can中断中收到的数据是存在8个数组中的RxMessage.Data所以如何把他们提取出来,我采用的方法是定义了一个int aa[8],然后依次用移位与1与的方法,把数组中的数据1位位提取出来。如a[0]= RxMessage.Data[0]&1;a[1]= (RxMessage.Data[0]>>1)&1;依次类推,即可把一个字节中的数据内容都提取出来,依此方法循环,再把其余7个字节中的数据进行提取,进行下一步的处理。
4.在发送小板发送数据时,把CAN的数据进行传递进去的时候定义了一个指针,把数组的首地址传入进去,这样觉得比较方便。
附件中带了主板的原理图和发送小板的程序以及接收小板的程序,加带了注释,可供新手进行学习参考(—_-||)接收小板的程序上传不了了,说我今日无法上传那么大的附件,以后传上来吧
stm32气缸板.pdf (273.92 KB, 下载次数: 470) 2013-11-27 14:18 上传 点击文件名下载附件




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。