
书: https://pan.baidu.com/s/1jDVnfhmGRwu5jeEuV63Kcg?pwd=bmyj
笔记如下:
- 嵌入式开发基础:C/C++在资源受限环境(如MCU)中的核心地位,强调效率与实时性。
- 硬件直接操作:通过指针访问内存映射寄存器(如
volatile uint32_t* reg = (uint32_t*)0xFFFF0000
)。 - 无操作系统编程:裸机(Bare-metal)开发模式,手动管理中断和时钟。
- 实时操作系统(RTOS):任务调度(如FreeRTOS的
xTaskCreate
)、信号量/队列的C实现。 - 内存管理约束:避免动态分配(
malloc
),使用静态数组或内存池(Memory Pool)替代。 - 低功耗优化:休眠模式(Sleep Mode)配置,外设时钟门控(Clock Gating)降低能耗。
- 中断服务例程(ISR):简短高效、避免阻塞,通过全局变量与主循环通信。
- 位操作技巧:置位(
|=
)、清零(&=
)、翻转(^=
)寄存器特定位。 - 外设驱动开发:UART、SPI、I2C的轮询与中断驱动实现。
- C++特性取舍:谨慎使用虚函数/异常(增加开销),模板(Template)适合编译时多态。
- 混合编程:C调用汇编(内联
asm
)优化关键代码(如CRC计算)。 - 跨平台兼容:处理字节序(Big/Little Endian)、对齐问题(
__attribute__((aligned(4)))
)。 - 看门狗定时器:硬件看门狗(WDT)配置,防止系统死锁。
- 调试技术:JTAG/SWD调试,利用
printf
重定向到串口(Semihosting)。 - 固件更新:Bootloader设计,通过UART/USB实现OTA(空中升级)。
- 时序敏感代码:禁用中断(
__disable_irq()
)、使用硬件定时器(如PWM生成)。 - 静态分析工具:PC-Lint检测未初始化变量、数组越界等隐患。
- 代码体积优化:编译器选项(
-Os
),移除未引用代码(-ffunction-sections
)。 - EMC/EMI设计:软件层面的抗干扰措施(如信号去抖、冗余校验)。
- 行业标准实践:遵循MISRA C/C++规范,确保代码安全性与可靠性。