C语言嵌入式风格

本质是:控制硬件 + 可预测 + 稳定 + 节省资源

1、不滥用动态内存(几乎不用 malloc)

c 复制代码
static int buffer[10];
# 更喜欢这种确定大小的代码

2、大量使用 volatile

c 复制代码
volatile uint32_t *reg = (uint32_t *)0x40021000;

3、直接操作寄存器

c 复制代码
#define GPIOA_ODR  (*(volatile unsigned int*)0x4001080C)

GPIOA_ODR |= (1 << 5);
# 本质上操作任何的寄存器也好或者是其他的硬件也好,在代码里的体现都是去直接操作对应的地址而已

4、避免复杂语法,更加注重可读性

5、状态机机制(留个坑,后面来填)

嵌入式代码举例:

c 复制代码
#include "stm32f10x.h"

void LED_Init(void)
{
    RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
    GPIOC->CRH &= ~(0xF << 20);
    GPIOC->CRH |= (0x1 << 20);
}

void LED_On(void)
{
    GPIOC->ODR &= ~(1 << 13);
}

void LED_Off(void)
{
    GPIOC->ODR |= (1 << 13);
}
相关推荐
RuoZoe7 天前
重塑WPF辉煌?基于DirectX 12的现代.NET UI框架Jalium
c语言
祈安_10 天前
C语言内存函数
c语言·后端
郑州光合科技余经理12 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo12312 天前
matlab画图工具
开发语言·matlab
dustcell.12 天前
haproxy七层代理
java·开发语言·前端
norlan_jame12 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone12 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
QQ40220549612 天前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
czy878747512 天前
除了结构体之外,C语言中还有哪些其他方式可以模拟C++的面向对象编程特性
c语言
遥遥江上月12 天前
Node.js + Stagehand + Python 部署
开发语言·python·node.js