前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >教你MODBUS程序符合MISRA规则

教你MODBUS程序符合MISRA规则

作者头像
用户1605515
发布2018-12-07 09:34:35
7310
发布2018-12-07 09:34:35
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

做嵌入式开发的广大工程师应该对MISRA C不陌生,他是Motor Industry Software Reliability Association 的缩写,现在很多的编译器已经集成对MISRA C的规则检查,但可以自己选择,也可以不检查,如果你的代码强制要求符合MISRA C的规则,那么在软件实现上就要注意,不能随便写。C语言中有时候指针很方便,但是MISRA C 对指针有很多限制和要求,要特别注意。

在通讯程序中其实用指针是很方便的,但鉴于MISRA C对指针的严格要求,现在在一般项目中,MODBUS程序,我都建议工程师使用数组,而且在头文件中利用宏定义来定义好数组索引对应的数据映射,那么用数组来实现也是很方便的,例如对输入寄存器的数据映射可以如下定义

这样的话添加任何数据只需要更改前后相关的两个宏就可以,而且很方便在应用层对数据的刷新,只要for循环就可以。而且数据的起始地址也可以定义在这个都文件中。那么在更新输入寄存器的数据就可以一个for循环搞定

正如函数描述注释所写,数组的索引就是上图的宏定义,也是数据映射的协议表,很方便,当然你的宏定义名字一定要起的很到位,做到见名知意,所以现在我都是要求工程师这样来实现,当然如果你有更好的办法也欢迎来交流沟通。之前移植都是用指针来实现,后来因为MISRA C要求的项目需求,我都改为这种方法来实现。解析相应程序可以采用switch来选择不同的功能码响应程序

并且要注意对异常码的响应,MISRA C对函数的返回值也有要求,所以养成习惯慢慢代码就自然越来越符合规则。并且代码一定要加注释,标准对注释率都是有要求的,像一些代码检查工具一般默认都要求注释率达到20%,所以尽可能加有用的注释,既方便代码维护,也方便团队合作,于己于人都有好处。

希望这个小技巧你已经领会。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档