编程手册和编程手册以及对各种数据类型(如内存)进行编程的简单方法。一般这些内存都是字节编程,不方便写浮点数据类型。
目录
背景知识
F1编程手册:
F3和F4编程手册:
F7和H7编程手册:
用各种数据类型对EEPROM、SPI Flash和其它存储器进行编程的简单方法
各种数据类型的SPI、UART、I2C和FDCAN的传输问题
实战案例:
展开粘贴,特别是结构的对齐:
背景各类知识数据的传输和存储都涉及到大小的问题,所以我们会在开头讲解这个知识点。
首先简单说一下芯片的尺寸,这里主要讨论Cortex-M核。权威指令如下:支持小端和大端内存系统e cortex -m3和cortex -M4处理器可以使用小端或bi。字节序存储系统。实际上,微控制器产品通常只设计一种端序配置。m内核支持大端或小端,实际应用中大部分内核都是小端。以STM32为例,都是小端,在芯片设计之初就固化了,无法修改。市面上其他厂商基本都固化了小端格式。
F1编程手册:
F3和F4编程手册:
F7和H7编程手册:
用各种数据类型对EEPROM、SPI Flash和其它存储器进行编程的简单方法。一般这些内存都是字节编程的,不方便写浮点数据类型。这里有一种定义结构和封装各种数据类型的方法:
用下面的方式写:
你可以用以下方式阅读:
SPI、UART、I2C、FDCAN和其他数据类型的传输。这里我们以串行通信为例。例如,主机应向从机发送以下格式数据:
我们可以做一个如下的结构格式:
typedef struct { uint8 _ t ucStartuint16 _ t usCO2uint16 _ t usPM25uint16_t湿润度;浮动温度;uint32 _ t ulParamuint8 _ t ucEnd1uint8 _ t ucEnd2} UART _ T;UART _ T g _ tUartParam当主机发送时,我们可以采用以下方法:
comSendBuf(COM1,(uint8_t *)&g_tUartParam,sizeof(UART _ T));从属工程也定义了相同的结构变量。例如,我们将接收到的数据帧存储在缓冲区uint8_t buf[50]中。
我们可以定义一个结构指针变量:
UART _ T * pUartParampUartParam =(UART _ T *)buf;然后,我们可以通过puartparam-> USCO2,puartparam-> tempo的方式进行访问,非常方便。
实际案例:可以下载我们论坛的V5,V6,或者V7板的工厂程序,都有相关代码可供参考。
膨胀贴,特别是结构找正问题:1。【烧脑技术贴】中无法回避的字节对齐问题,从八个方向(变量对齐、堆栈对齐、DMA对齐、结构对齐、缓存、RTOS双栈等)进行了深入探讨。):地址链接2。推荐一个硬件bitband的超简单操作方法,让变量和寄存器控制以及IO访问更加方便,不需要用户计算位置:。
评论前必须登录!
注册