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);
}
相关推荐
Once_day3 小时前
GCC编译(1)入门概述
c语言·编译和链接
zmzb01033 小时前
C++课后习题训练记录Day104
开发语言·c++
爱编码的小八嘎4 小时前
第2章 认识CPU-2.2 16位微处理器(2)
c语言
zmzb01034 小时前
C++课后习题训练记录Day105
开发语言·c++·算法
wjs20244 小时前
Vue3 条件语句
开发语言
_codemonster4 小时前
JavaWeb开发系列(六)JSP基础
java·开发语言
Web打印5 小时前
Phpask(php集成环境)之16 怎样彻底停用一个网站
开发语言·php
临水逸5 小时前
飞牛fnos 2025 漏洞Java跨域URL浏览器
java·开发语言·安全·web安全
H Corey5 小时前
数据结构与算法:高效编程的核心
java·开发语言·数据结构·算法