STM32HAL库强耦合驱动 硬汉哥有句话我记得很清楚:“嵌入式开发的痛是兼容性”。最开始我的驱动代码底层与STM32的HAL库强耦合,比如会在文件开头extern I2C_HandleTypeDef hi2c1来引入HAL库中i2c的句柄,再编写驱动底层的原子操作: static HAL_Stat
系统高可用-IWDG 为了保证设备长时间的运行有足够的稳定性,即使是出现严重的系统故障也能继续尝试重启设备,我们需要配置IWDG。IWDG是独立看门狗,依赖于LSI内部低速时钟,这可以让这个功能保证高可用,只要MCU有电,无论是什么外设损坏了,或者是外部时钟出现了问题,IWDG都可以保持运行,尝试重
案发现场 完成所有的模块外设调试后开始编写业务代码,初次接触RTOS下的业务代码编写,出现了一些小bug。 使用CubeMX生成RTOS任务(默认生成的工程有四个DefaultTask属实难绷): /* Definitions for LoraTask */ osThreadId_t LoraTas
完成LPDMA与SRAM4配置后,修改原先的代码并进行测试,发现接收不到任何数据,于是进行调试: 串口发送调试 我先进行了串口发送的调试,APP代码中将生成的遥测数据通过memcpy将生成的tx_buf数据从SRAM1内存中,通过调试器可以看到SRAM4中的数据。 在向tx_buf搬运完数据后打断点
STM32U5中的两个域 LPDMA是STM32U5中实现超低功耗的一个重要外设。STM32U5有域的概念,包括两个域: CD(CPU Demain) SRD(Smart Run Domain) CD是CPU域,包括Cortex-M33内核,Flash存储器,大部分高性能外设(GPDMA1,高速通信
项目背景 大二时候实验室为了申报一个新苗项目,需要制作一个低功耗的农场遥测数据传感器节点,需要的是实现低功耗数据采集与发送,最好还能够实现对服务器下发的RPC命令的响应。第一版制作代码非常粗糙,一个几乎可以认为完全不存在鲁棒性的系统。当时使用STM32F103C8T6搭配标准库进行开发(经典),其中