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);
}
相关推荐
Hello--_--World11 小时前
ES16:Set 集合方法增强、Promise.try、迭代器助手、JSON 模块导入 相关知识
开发语言·javascript·json
念恒1230611 小时前
进程概念(1)
linux·c语言
StockTV12 小时前
韩国市场API技术对接指南,涵盖实时行情、历史数据、指数信息、公司详情等功能
java·开发语言·python·php
penngo12 小时前
用 Claude Code 开发多人猜拳游戏:Go 语言实践
开发语言·游戏·golang
念恒1230612 小时前
进程概念(2)
linux·c语言
xiaoshuaishuai812 小时前
C# 实现不掉线的CRM
开发语言·c#
YuanDaima204812 小时前
大语言模型生命周期全链路解析:从架构基石到高效推理
开发语言·人工智能·python·语言模型·架构·transformer
weixin_4460235612 小时前
C语言过时了?2026年C3和Zig谁能拯救它
c语言·zig·c3·系统级开发·语言革新
bike兔兔12 小时前
Python实现CSV文件转Excel,一键格式转换办公小脚本
开发语言·windows·python
XMYX-012 小时前
goroutine 为什么没有返回值?(Go 并发核心设计思想)
开发语言·golang