如何使用C++写嵌入式代码
发表于:2024-10-22 作者:千家信息网编辑
千家信息网最后更新 2024年10月22日,这篇文章主要介绍"如何使用C++写嵌入式代码",在日常操作中,相信很多人在如何使用C++写嵌入式代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用C++写嵌入式
千家信息网最后更新 2024年10月22日如何使用C++写嵌入式代码
这篇文章主要介绍"如何使用C++写嵌入式代码",在日常操作中,相信很多人在如何使用C++写嵌入式代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用C++写嵌入式代码"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1. 寄存器的声明和定义:
访问MCU中的寄存器是mcu开发的基本功能,传统C程序使用宏和与或非操作来访问寄存器,之所以不使用位域来访问是因为:
代码移植(不同的编译器可能会产生不同的位序),但如果只使用一种编译器则可避免。
多任务时非原子操作等问题,例如,对位域赋值时执行读改写三步操作,在多任务系统中造成数据不同步;但在传统的代码中如果使用REG |= (1 ≪ 0)这种形式的代码也是会造成同样的问题。
但是使用位域也有一些好处:
封装寄存器的简单变化,例如,同样的寄存器结构不同的内存布局。
赋值操作既可以访问,且不用担心数据大小,
封装了位信息,定义模板时不用再根据芯片类型引入不同的头文件
可以作为模板参数来传递。例如:
struct PORTA_t { byte reserved_0[57]; byte PIN; //!< Port A Input Pins byte DDR; //!< Port A Data Direction Register byte PORT; //!< Port A Data Register};
设备模板, 使用位域作为模板参数。以端口设备为例:
templateclass Port {public: static void init(const byte mode); static void write(const bit hl); static byte read(); static void toggle();private:};
模板参数就是端口寄存器的类型和其实例。定义模板具体实例后,即可使用,如:
using led1 = Port;led0::init(PORT_MODE_OUTPUT);while(1) { led1::toggle();}
这样定义出来的模板
复用性好,在同一系列芯片中基本不用改变代码,
使用简单,一看就懂,比较适合我等屁民使用,
而且使用静态模板技术,则和传统C一样,不用考虑this指针,没有创建对象的过程。
如果最求高效率,那么还可以使用特化技术针对摸个设备进行优化。
到此,关于"如何使用C++写嵌入式代码"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
代码
模板
寄存器
嵌入式
C++
不同
不用
学习
传统
参数
设备
问题
任务
实例
技术
数据
更多
端口
类型
编译器
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
乡镇网络安全活动总结
性能服务器多少钱一台
口袋之旅服务器异常怎么办
模拟器查询本地数据库
小学生网络安全课件免费
软件开发地图管理
数据库数据清洗操作
数据库管理员登录检查
软件开发后台需要画原型图吗
网络安全工作怎样主动作为
计算机网络技术基础考试题库
hcia网络安全题库
海关数据库微观
服务器域时间管理
做软件开发要具备哪些知识
两个小程序用一个云数据库
数据库翻页嵌套查询
离线应服务器
2020数据库模拟卷
谜语 软件开发
福建银行网络安全
网络安全大面积停电
上海网络软件开发服务大概费用
中化能源互联网科技 刘敏
软件开发后台需要画原型图吗
网信办网络安全调研
宝塔迁移服务器连接失败
数据库在表中添加新字段
黄浦区工程网络技术欢迎咨询
更新数据库失败