摘要:編程手冊(cè)和編程手冊(cè)和編程手冊(cè)各種數(shù)據(jù)類型編程,等存儲(chǔ)器的簡易方法一般這些存儲(chǔ)器都是字節(jié)編程,寫入浮點(diǎn)等數(shù)據(jù)類型時(shí)不太方便。
目錄
各種數(shù)據(jù)類型編程EEPROM,SPI Flash等存儲(chǔ)器的簡易方法
各種數(shù)據(jù)類型的SPI,UART,I2C,F(xiàn)DCAN等傳輸問題
補(bǔ)充拓展貼,特別是結(jié)構(gòu)體對(duì)齊問題:
各種類型的數(shù)據(jù)傳輸和存儲(chǔ)就涉及到大小端的問題,所以我們?cè)陂_頭把這個(gè)知識(shí)點(diǎn)做個(gè)說明。
?
首先要簡單說下芯片的大小端問題,我們這里主要討論Cortex-M內(nèi)核。
權(quán)威指南的說明如下:
Support for little endian and big endian memory systems e The Cortex-M3 and Cortex-M4 processors can work with either little endian or big endian memory systems. In practice, a microcontroller product is normally designed with just one endian configuration.
M內(nèi)核支持大端或者小端,實(shí)際應(yīng)用中大部分內(nèi)核都是小端。以STM32為例,全部都是小端,而且是芯片設(shè)計(jì)之初就固化進(jìn)去的,不可修改。市面上其他廠家基本也都固化的小端格式。
?
?
?
?
一般這些存儲(chǔ)器都是字節(jié)編程,寫入浮點(diǎn)等數(shù)據(jù)類型時(shí)不太方便。
這里分享一個(gè)方法,定義一個(gè)結(jié)構(gòu)體,將各種數(shù)據(jù)類型封裝進(jìn)去:
?
寫入的時(shí)候采用下面方式:
?
讀取時(shí)可以采用下面方式:
?
這里我們以串口通信為例,比如主機(jī)要發(fā)送如下格式數(shù)據(jù)給從機(jī):
?
我們可以做一個(gè)如下結(jié)構(gòu)體格式:
typedef struct{ uint8_t ucStart; uint16_t usCO2; uint16_t usPM25; uint16_t usHumidity; float Temprature; uint32_t ulParam; uint8_t ucEnd1; uint8_t ucEnd2; }UART_T;UART_T g_tUartParam;
主機(jī)發(fā)送的時(shí)候我們就可以采用如下方法:
comSendBuf(COM1, (uint8_t *)&g_tUartParam, sizeof(UART_T));
從機(jī)工程也定義一個(gè)同樣的結(jié)構(gòu)體變量,比如我們把接收到一幀數(shù)據(jù)存到緩沖uint8_t buf[50]里面了。
我們就可以定義一個(gè)結(jié)構(gòu)體指針變量:
UART_T *pUartParam;pUartParam = (UART_T *)buf;
那么我們就可以pUartParam->usCO2,??pUartParam->Temprature等方式來訪問,非常方便。
?
大家可以下載我們論壇置頂帖V5,V6或者V7板子出廠程序,里面都有相關(guān)代碼參考。
?
1、【燒腦技術(shù)貼】無法回避的字節(jié)對(duì)齊問題,從八個(gè)方向深入探討(變量對(duì)齊,棧對(duì)齊,DMA對(duì)齊,結(jié)構(gòu)體成對(duì)齊,Cache, RTOS雙堆棧等):地址鏈接
2、推薦一種超簡單的硬件位帶bitband操作方法,讓變量,寄存器控制,IO訪問更便捷,無需用戶計(jì)算位置:地址鏈接
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/124460.html
摘要:總線掛載的外設(shè)有等。外設(shè)地址映射片上外設(shè)區(qū)分為三條總線,根據(jù)外設(shè)速度的不同,不同總線掛載著不同的外設(shè),掛載低速外設(shè),和掛載高速外設(shè)。 第二章 STM32資源介紹 2...
摘要:從設(shè)備使能信號(hào),由主設(shè)備控制,只有該信號(hào)為預(yù)先規(guī)定的使能信號(hào),對(duì)該芯片的操作才有效,這就允許再統(tǒng)一總線上連接多個(gè)設(shè)備。點(diǎn)對(duì)點(diǎn)通信中,接口不需要進(jìn)行尋址操作,但是沒有指定的流控制,沒有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)。 1、GPIO 通用可編程IO接口,對(duì)于簡單的外圍設(shè)備或者電路,需要CPU為之提供...
摘要:接收緩沖區(qū)和發(fā)送緩沖區(qū)的請(qǐng)求是獨(dú)立的。此時(shí)串口實(shí)際上還有個(gè)字節(jié)并未發(fā)送完成,數(shù)據(jù)寄存器和移位寄存器中的個(gè)字節(jié)還需要發(fā)送,并不能關(guān)閉串口發(fā)送。 文章目錄 串口通訊串...
摘要:目錄工作原理硬件架構(gòu)硬件架構(gòu)通道的作用寄存器出現(xiàn)的目的出現(xiàn)的目的工作原理全拼直接內(nèi)存存取,在傳統(tǒng)的存取數(shù)據(jù)時(shí)會(huì)先將數(shù)據(jù)放到緩存寄存器中然后在寫入到指定位置存取數(shù)據(jù)流程圖經(jīng)歷了三個(gè)步驟,先將內(nèi)存中指定位置 目錄 工作原理 DMA硬件架構(gòu) DMA通道的作用 DMA寄存器 DMA出現(xiàn)的目的 工作原...
摘要:前言芯片接口占用管腳數(shù)量比以太網(wǎng)的少,版線布局可更精簡。網(wǎng)卡芯片介紹接口網(wǎng)卡芯片是為方物聯(lián)網(wǎng)行業(yè)進(jìn)以太網(wǎng)通信而開發(fā)出的解決方案。此應(yīng)用可用于監(jiān)控家庭物聯(lián)網(wǎng)網(wǎng)關(guān)搭建等。 前言 ????DM9051NP芯片?SPI接口占用管腳數(shù)量比以太網(wǎng)PHY的RMII/MII少,PCBA版線布局可更精簡。...
閱讀 695·2021-11-23 09:51
閱讀 3287·2019-08-30 15:54
閱讀 447·2019-08-30 15:52
閱讀 3120·2019-08-30 13:58
閱讀 2923·2019-08-30 13:53
閱讀 2691·2019-08-29 14:18
閱讀 2424·2019-08-27 10:54
閱讀 2371·2019-08-26 18:09