337_S32K144 CAN错误种类获取

完整的S32K144的学习汇总如下:

https://github.com/GreyZhang/g_s32k144

    这算是计划之外的一份学习总结,本来打算错误能够触发捕获到就结束这一项学习。不过,看了一下SDK的代码之后我发现其实这里还有一个小技巧值得去看看。这个技巧就是快速判断出buserr、busoff之类的错误是否发生了。

    之前做PowerPC的驱动开发,习惯了半导体提供的位域操作的头文件。这次切换到了S32K144这个ARM平台学习,感觉有那么一点不顺手。其实,相应的功能在基础的代码信息中也是有的,只是这算是另一个技巧:位操作。

    注意到S32K144.h这个头文件中有如下的宏定义:

337_S32K144 CAN错误种类获取_第1张图片

    有了这些,我们的一些位域提供的功能就可以通过位操作来实现了。接下来,写一点测试代码如下:

337_S32K144 CAN错误种类获取_第2张图片

    通过上面的代码获取到相应的错误状态信息,虽然看上去比位域麻烦一点,但是也不算太麻烦。至少,比自己去重新设计要快捷一点。

    代码测试效果如下:

337_S32K144 CAN错误种类获取_第3张图片

    通过制造出之前的故障,成功获取到了两个错误状态信息。这是一个很有用的小技巧,或许其他的功能探索中依然会有用到。

    刚刚看了一个流行的小工具的代码,十分精简,代码量也不是很大。但是,功能强大也受到很大的认可度。说起来,实现难度不见得高。这让我突然间觉得,或许我们的学习一直在追求广度,缺少了深度的探索。而真正有突破性的创作,或者是设计都跟深度有着高强度的联系。简单的招数发挥到极致就是绝招,或许,我们应该在招数发挥的极致程度上进一步修炼。祝愿看到我学习笔记的你,也能够修炼出自己的绝招!

完整的S32K144的学习汇总如下:

https://github.com/GreyZhang/g_s32k144

你可能感兴趣的:(S32K,嵌入式,CAN)