千家信息网

如何使用C++写嵌入式代码

发表于:2024-10-22 作者:千家信息网编辑
千家信息网最后更新 2024年10月22日,这篇文章主要介绍"如何使用C++写嵌入式代码",在日常操作中,相信很多人在如何使用C++写嵌入式代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用C++写嵌入式
千家信息网最后更新 2024年10月22日如何使用C++写嵌入式代码

这篇文章主要介绍"如何使用C++写嵌入式代码",在日常操作中,相信很多人在如何使用C++写嵌入式代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用C++写嵌入式代码"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 寄存器的声明和定义:

访问MCU中的寄存器是mcu开发的基本功能,传统C程序使用宏和与或非操作来访问寄存器,之所以不使用位域来访问是因为:

  1. 代码移植(不同的编译器可能会产生不同的位序),但如果只使用一种编译器则可避免。

  2. 多任务时非原子操作等问题,例如,对位域赋值时执行读改写三步操作,在多任务系统中造成数据不同步;但在传统的代码中如果使用REG |= (1 ≪ 0)这种形式的代码也是会造成同样的问题。

但是使用位域也有一些好处:

  1. 封装寄存器的简单变化,例如,同样的寄存器结构不同的内存布局。

  2. 赋值操作既可以访问,且不用担心数据大小,

  3. 封装了位信息,定义模板时不用再根据芯片类型引入不同的头文件

  4. 可以作为模板参数来传递。例如:

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();}

这样定义出来的模板

  1. 复用性好,在同一系列芯片中基本不用改变代码,

  2. 使用简单,一看就懂,比较适合我等屁民使用,

  3. 而且使用静态模板技术,则和传统C一样,不用考虑this指针,没有创建对象的过程。

  4. 如果最求高效率,那么还可以使用特化技术针对摸个设备进行优化。

到此,关于"如何使用C++写嵌入式代码"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

代码 模板 寄存器 嵌入式 C++ 不同 不用 学习 传统 参数 设备 问题 任务 实例 技术 数据 更多 端口 类型 编译器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发新项目源代码所有权 服务器做完系统后没有启动项 金华物流软件开发需要学什么 浙江物流软件开发费用 上海艾甲互联网络科技怎么样 科技叠加互联网大金融股票 北京搜房网络技术深圳分公司 长沙众元网络技术有限公司怎么样 群晖服务器构建内网 数据库无法读取硬盘 网络安全法的主要内容包括 非标设备应用软件开发 所谓网络安全漏洞是指什么 呼和浩特手机软件开发 nba服务器不闪退 松江区创新数据库服务商价格查询 关联后提取数据库 怎拼取消文件服务器配额管理 广播电视技术能手 网络安全 网络安全大赛闭幕式致辞 软件开发的重要性是什么 学软件开发具备什么条件 网络安全100字图片 oracle查询当前数据库 data连接数据库 午夜猎魂正在连接服务器 数据库dms包括什么 误操作删除了数据库没备份 服务器装w7 天津服务器租用云主机
0