一、STM32F1和F4的區(qū)別?
解答:
參看:STM32開發(fā) – STM32初識
內(nèi)核不同:F1是Cortex-M3內(nèi)核,F(xiàn)4是Cortex-M4內(nèi)核;
主頻不同:F1主頻72MHz,F(xiàn)4主頻168MHz;
浮點運算:F1無浮點運算單位,F(xiàn)4有;
功能性能:F4外設(shè)比F1豐富且功能更強大,比如GPIO翻轉(zhuǎn)速率、上下拉電阻配置、ADC精度等;
內(nèi)存大小:F1內(nèi)部SRAM最大64K,F(xiàn)4有192K(112+64+16)。
二、介紹以下STM32啟動過程?
解答:
參看:STM32開發(fā) – 啟動流程
通過Boot引腳設(shè)定,尋找初始地址
初始化棧指針 __initial_sp
指向復(fù)位程序 Reset_Hander
設(shè)置異常中斷 HardFault_Handler
設(shè)置系統(tǒng)時鐘 SystemInit
調(diào)用C庫函數(shù) _main
三、介紹以下GPIO?
解答:
參看:STM32開發(fā) – GPIO詳解
GPIO 8種工作模式(gpio_init.GPIO_Mode):
(1) GPIO_Mode_AIN 模擬輸入
(2) GPIO_Mode_IN_FLOATING 浮空輸入
(3) GPIO_Mode_IPD 下拉輸入
(4) GPIO_Mode_IPU 上拉輸入
(5) GPIO_Mode_Out_OD 開漏輸出
(6) GPIO_Mode_Out_PP 推挽輸出
(7) GPIO_Mode_AF_OD 復(fù)用開漏輸出
(8) GPIO_Mode_AF_PP 復(fù)用推挽輸出
APB2負責 AD,I/O,高級TIM,串口1。
APB1負責 DA,USB,SPI,I2C,CAN,串口2345,普通TIM,PWR
GPIO框圖剖析:
參看:STM32-GPIO詳解
四、UART
問題一:串行通信方式介紹?
同步通信:I2C 半雙工,SPI 全雙工異步通信:RS485 半雙工、RS232 全雙工
問題二:串口配置?
串口設(shè)置的一般步驟可以總結(jié)為如下幾個步驟:(1)串口時鐘使能,GPIO時鐘使能(2)串口復(fù)位(3)GPIO端口模式設(shè)置TX的GPIO工作模式為:GPIO_Mode_AF_PP;//復(fù)用推挽輸出RX的GPIO工作模式為:GPIO_Mode_IN_FLOATING;//浮空輸入(4)串口參數(shù)初始化主要包含:波特率設(shè)置(115200)、8個數(shù)據(jù)位、1個停止位、無奇偶校驗位、無硬件數(shù)據(jù)流控制、收發(fā)模式。(5)開啟中斷并且初始化NVIC(如果需要開啟中斷才需要這個步驟)(6)使能串口(7)編寫中斷處理函數(shù)
問題三:USART主要特點?
(1)全雙工操作(相互獨立的接收數(shù)據(jù)和發(fā)送數(shù)據(jù));(2)同步操作時,可主機時鐘同步,也可從機時鐘同步;(3)獨立的高精度波特率發(fā)生器,不占用定時/計數(shù)器;(4)支持5、6、7、8和9位數(shù)據(jù)位,1或2位停止位的串行數(shù)據(jù)楨結(jié)構(gòu);(5)由硬件支持的奇偶校驗位發(fā)生和檢驗;(6)數(shù)據(jù)溢出檢測;(7)幀錯誤檢測;(8)包括錯誤起始位的檢測噪聲濾波器和數(shù)字低通濾波器;(9)三個完全獨立的中斷,TX發(fā)送完成、TX發(fā)送數(shù)據(jù)寄存器空、RX接收完成;(10)支持多機通信模式;(11)支持倍速異步通信模式。
解答:
參看:STM32開發(fā) – 串口詳解
應(yīng)用場景:GPS、藍牙、4G模塊
五、I2C
問題一:I2C 總線在傳送數(shù)據(jù)過程中共有三種類型信號?
(1)開始信號:SCL 為高電平時,SDA 由高電平向低電平跳變,開始傳送數(shù)據(jù)。(2)結(jié)束信號:SCL 為高電平時,SDA 由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。(3)應(yīng)答信號:接收數(shù)據(jù)的 IC 在接收到 8bit 數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的 IC 發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU 向受控單元發(fā)出一個信號后,等待受控單元發(fā)出一個應(yīng)答信號,CPU 接收到應(yīng)答信號后,根據(jù)實際情況作出是否繼續(xù)傳遞信號的判斷。若未收到應(yīng)答信號,由判斷為受控單元出現(xiàn)故障。
問題二:I2C配置主機模式端口該怎么配置?
硬件模式:復(fù)用開漏輸出、既不上拉也不下拉。(快速模式:400 Kbit/s)軟件模擬:推挽輸出、配置上拉電阻。
問題三:I2C仲裁機制?
參看:S5PV210開發(fā) – I2C 你知道多少?(三)
I2C 仲裁機制,理解了 線“與”(Wired-AND),就一目了然了。簡單說,它遵循“低電平優(yōu)先”的原則,即誰先發(fā)送低電平誰就會掌握對總線的控制權(quán)。
解答:
參看:STM32開發(fā) – PMIC、I2C詳解
硬件模式:是有通信速率設(shè)置的
/* STM32 I2C 快速模式 */
#define I2C_Speed 400000
/* 通信速率 */
I2C_InitStructure.I2C_ClockSpeed = I2C_Speed;
軟件模擬:沒有設(shè)置通信速率,該怎么計算呢?
通過I2C總線位延遲函數(shù) i2c_Delay:
static void i2c_Delay(void) { uint8_t i; /* 下面的時間是通過安富萊AX-Pro邏輯分析儀測試得到的。 CPU主頻72MHz時,在內(nèi)部Flash運行, MDK工程不優(yōu)化 循環(huán)次數(shù)為10時,SCL頻率 = 205KHz 循環(huán)次數(shù)為7時,SCL頻率 = 347KHz, SCL高電平時間1.5us,SCL低電平時間2.87us 循環(huán)次數(shù)為5時,SCL頻率 = 421KHz, SCL高電平時間1.25us,SCL低電平時間2.375us IAR工程編譯效率高,不能設(shè)置為7 */ for (i = 0; i < 10; i++); }
應(yīng)用場景:PMIC、加速度計、陀螺儀
六、SPI
問題一:SPI需要幾根線?
SPI 接口一般使用 4 條線通信:MISO 主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出。MOSI 主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入。SCLK 時鐘信號,由主設(shè)備產(chǎn)生。CS 從設(shè)備片選信號,由主設(shè)備控制。
問題二:SPI通信的四種模式?
SPI 有四種工作模式,各個工作模式的不同在于 SCLK 不同, 具體工作由 CPOL,CPHA 決定。(1)CPOL: (Clock Polarity),時鐘極性:
SPI的CPOL,表示當SCLK空閑idle的時候,其電平的值是低電平0還是高電平1:CPOL=0,時鐘空閑idle時候的電平是低電平,所以當SCLK有效的時候,就是高電平,就是所謂的active-high;CPOL=1,時鐘空閑idle時候的電平是高電平,所以當SCLK有效的時候,就是低電平,就是所謂的active-low;
(2)CPHA:(Clock Phase),時鐘相位:
相位,對應(yīng)著數(shù)據(jù)采樣是在第幾個邊沿(edge),是第一個邊沿還是第二個邊沿,
0對應(yīng)著第一個邊沿,1對應(yīng)著第二個邊沿。對于:
CPHA=0,表示第一個邊沿:
對于CPOL=0,idle時候的是低電平,第一個邊沿就是從低變到高,所以是上升沿;
對于CPOL=1,idle時候的是高電平,第一個邊沿就是從高變到低,所以是下降沿;
CPHA=1,表示第二個邊沿:
對于CPOL=0,idle時候的是低電平,第二個邊沿就是從高變到低,所以是下降沿;
對于CPOL=1,idle時候的是高電平,第一個邊沿就是從低變到高,所以是上升沿;
問題三:該如何確定使用哪種模式?
(1)先確認從機需求的 SCLK 極性,不工作時是在低電位還是高電位,由此確認 CPOL 為 0 或 1??丛韴D,我們設(shè)置串行同步時鐘的空閑狀態(tài)為高電平所以我們選擇 SPI_CPOL_High。也就是CPOL為1
(2)再由slave芯片 datasheet 中的時序圖確認 slave 芯片是在 SCLK 的下降沿采集數(shù)據(jù),還是在SCLK的上升沿。翻譯一下:W25Q32JV通過SPI兼容總線訪問,包括四個信號:串行時鐘(CLK),芯片選擇(/CS),串行數(shù)據(jù)輸入(DI)和串行數(shù)據(jù)輸出(DO)。標準SPI指令使用DI輸入引腳串行地將指令、地址或數(shù)據(jù)寫入CLK上升沿上的設(shè)備。DO輸出引腳用于從CLK下降沿上的設(shè)備讀取數(shù)據(jù)或狀態(tài)。支持模式0(0,0)和3(1,1)的SPI總線操作。模式0和模式3關(guān)注的是當SPI總線主端處于待機狀態(tài),數(shù)據(jù)沒有被傳輸?shù)酱蠪lash時CLK信號的正常狀態(tài)。對于模式0,在下降和上升時,CLK信號通常是低的邊緣/ CS。對于模式3,在/CS的下降和上升邊緣上CLK信號通常是高的。既然串行同步時鐘的空閑狀態(tài)為高電平,這里我們選擇第二個跳變沿,所以選擇 SPI_CPHA_2Edge。也就是CPHA為1
即,我們選擇的是模式3(1,1)。
解答:
參看:STM32開發(fā) – W25Q32JV SPI FlASH詳解
參看:詳解SPI中的極性CPOL和相位CPHA
應(yīng)用場景:SPI Flash,W25Q32 存儲器容量 32Mb (4M x 8),即4M byte
七、CAN
問題一:CAN總結(jié)介紹一下?
CAN控制器根據(jù) CAN_L 和 CAN_H上 的電位差來判斷總線電平??偩€電平分為顯性電平和隱性電平,二者比居其一。發(fā)送方通過使總線電平發(fā)生變化,將消息發(fā)送給接收方。
問題二:CAN初始化配置步驟?
(1)配置相關(guān)引腳的復(fù)用功能,使能CAN時鐘(2)設(shè)置CAN工作模式及波特率等(CAN初始化環(huán)回模式,波特率500Kbps )(3)設(shè)置濾波器
問題三:CAN發(fā)送數(shù)據(jù)格式?
解答:
參看:STM32開發(fā) – CAN總線詳解
八、DMA
問題一:DMA介紹?
問題一:DMA傳輸模式有幾種?
解答:
參看:STM32開發(fā) – DMA詳解
一個比較重要的函數(shù),獲取當前剩余數(shù)據(jù)量大小,根據(jù)設(shè)置的接收buff大小減去當前剩余數(shù)據(jù)量 ,得到當前接收數(shù)據(jù)大小。
九、中斷
問題一:描述一下中斷的處理流程?
問題二:STM32的中斷控制器支持多少個外部中斷?
解答:
參看:STM32開發(fā) – 外部中斷詳解
十、STM32有幾個時鐘源?
解答:
參看:STM32開發(fā) – 時鐘系統(tǒng)詳解
十一、RTOS的任務(wù)是怎么寫的?如何切出這個任務(wù)?
解答:
一個任務(wù),也稱作一個線程。
并非是每一任務(wù)按優(yōu)先級順序輪流執(zhí)行的,而是高優(yōu)先級的任務(wù)獨占運行,除非其主動放棄執(zhí)行,否則低優(yōu)先級任務(wù)不能搶占,同時高優(yōu)先級可以把放出去給低優(yōu)先級任務(wù)使用的CPU占用權(quán)搶回來。所以ucos的任務(wù)間要注意插入等待延時,以便ucos切出去讓低優(yōu)先級任務(wù)執(zhí)行。
十二、UCOSII中任務(wù)間的通信方式有哪幾種?
解答:
在UCOSII中,是使用信號量、郵箱(消息郵箱)和消息隊列這些被稱作事件的中間環(huán)節(jié)來實現(xiàn)任務(wù)間的通信的,還有全局變量。
應(yīng)用實例:互斥信號量
郵箱(消息郵箱):
消息隊列:
應(yīng)用場景:
十三、項目使用了自定義協(xié)議,是什么結(jié)構(gòu)?
解答:
了解過Modbus協(xié)議。
十四、uCOSII和Linux的差異?
解答:
μC/OS-II是專門為計算機的嵌入式應(yīng)用設(shè)計的,μC/OS-II 具有執(zhí)行效率高、占用空間小、實時性能優(yōu)良和可擴展性強等特點, 最小內(nèi)核可編譯至 2KB。μC/OS-II 已經(jīng)移植到了幾乎所有知名的CPU 上。
十五、Git提交代碼
問題:Git提交代碼過程?
解答:
1、顯示工作路徑下已修改的文件:
2、進入修改文件目錄:
3、顯示與上次提交版本文件的不同:
4、把當前所有修改添加到下次提交中:
5、添加相關(guān)功能說明,(第一次提交使用這個)
其中還要注明:
7、請勿修改已發(fā)布的提交記錄! (以后提交使用這個)
命令模式下:
十六、ucosii和ucosiii和freeRTOS比較
問題一:三者比較?
解答:
ucosii和freeRTOS比較:
ucosii和ucosiii比較:
十七、低功耗模式
問題一:低功耗模式有幾種?喚醒方式是什么?
解答:
十八、物聯(lián)網(wǎng)的架構(gòu)
問題一:物聯(lián)網(wǎng)的架構(gòu)分為幾層?每一層都負責哪些功能?
解答:
分三層,物聯(lián)網(wǎng)從架構(gòu)上面可以分為感知層、網(wǎng)絡(luò)層和應(yīng)用層,
十九、內(nèi)存管理
問題一:UCOS中內(nèi)存管理的方法有哪些?
解答:
系統(tǒng)通過與內(nèi)存分區(qū)相關(guān)聯(lián)的內(nèi)存控制塊來對內(nèi)存分區(qū)進行管理。
動態(tài)內(nèi)存管理函數(shù)有:
二十、Ucos中任務(wù)的狀態(tài)有哪幾種?畫出任務(wù)狀態(tài)之間的關(guān)系圖?
解答:
有5種狀態(tài):
UCOSII任務(wù)的5個狀態(tài)轉(zhuǎn)換關(guān)系:
二十一、ADC
問題一:簡述STM32的ADC系統(tǒng)的功能特性?
解答:
參看:STM32開發(fā) – ADC詳解
二十二、系統(tǒng)時鐘
問題一:簡述設(shè)置系統(tǒng)時鐘的基本流程?
解答:
二十三、HardFault_Handler處理
問題一:造成原因?
問題二:處理方式?
解答:
參看:STM32開發(fā) – HardFault_Handler處理
二十四、TTS語音合成方法
問題一:sim7600 TTS語音使用什么方法?
解答:
(1)使用unicode編碼合成聲音
二十五、定時器
問題一:已知STM32的系統(tǒng)時鐘為72MHz,如何設(shè)置相關(guān)寄存器,實現(xiàn)20ms定時?
解答:
參看:STM32開發(fā) – Systick定時器
其中:
如果需要20ms則,可以通一設(shè)置一個全局變量,然后定初值得為20,這樣,每個systick中斷一次,這個全局變量減1,減到0,即systick中斷20次,時間為:1ms*20=20ms。從而實現(xiàn)20ms的定時。
二十六、優(yōu)先級
問題一:如果是兩個優(yōu)先級相同的任務(wù)怎么運行?
解答:
使獲得信號量任務(wù)的優(yōu)先級在使用共享資源期間暫時提升到所有任務(wù)最高優(yōu)先級的高一個級別上,以使該任務(wù)不被其他任務(wù)所打斷,從而能盡快地使用完共享資源并釋放信號量,然后在釋放信號量之后,再恢復(fù)該任務(wù)原來的優(yōu)先級別。
二十七、狀態(tài)機
問題一:使用的什么狀態(tài)機?
解答:
參看:STM32開發(fā) – 狀態(tài)機與狀態(tài)切換邏輯
有限狀態(tài)機,(英語:Finite-state machine, FSM),又稱有限狀態(tài)自動機,簡稱狀態(tài)機。
假設(shè)狀態(tài)機的狀態(tài)轉(zhuǎn)換由下表所示:
實現(xiàn):(使用switch語句)
二十八、器件選型
問題一:STM32F407 VS STM32F103 主要功能及資源對比?
解答:
參看:STM32F407 VS STM32F103 主要功能及資源對比
審核編輯:湯梓紅
CanTxMsg TxMessage;TxMessage.StdId=0x12; // 標準標識符TxMessage.ExtId=0x12; // 設(shè)置擴展標示符TxMessage.IDE=CAN_Id_Standard; // 標準幀TxMessage.RTR=CAN_RTR_Data; // 數(shù)據(jù)幀TxMessage.DLC=len; // 要發(fā)送的數(shù)據(jù)長度 發(fā)送8個字節(jié)for(i=0;i
直接存儲器存取(DMA) 用來提供在外設(shè)和存儲器之間或者存儲器和存儲器之間的高速數(shù)據(jù)傳輸。無須CPU干預(yù),數(shù)據(jù)可以通過DMA快速地移動,這就節(jié)省了CPU的資源來做其他操作。
DMA_Mode_Circular 循環(huán)模式DMA_Mode_Normal 正常緩存模式應(yīng)用場景:GPS、藍牙,都是用的循環(huán)采集,DMA_Mode_Circular模式。
(1)初始化中斷,設(shè)置觸發(fā)方式是上升沿/下降沿/雙沿觸發(fā)。(2)觸發(fā)中斷,進入中斷服務(wù)函數(shù)
STM32的中斷控制器支持19個外部中斷/事件請求:
從圖上來看,GPIO 的管腳 GPIOx.0~GPIOx.15(x=A,B,C,D,E,F(xiàn),G)分別對應(yīng)中斷線 0 ~ 15。另外四個EXTI線的連接方式如下:● EXTI線16連接到PVD輸出● EXTI線17連接到RTC鬧鐘事件● EXTI線18連接到USB喚醒事件● EXTI線19連接到以太網(wǎng)喚醒事件(只適用于互聯(lián)型產(chǎn)品)中斷服務(wù)函數(shù)列表:
IO口外部中斷在中斷向量表中只分配了7個中斷向量,也就是只能使用7個中斷服務(wù)函數(shù)。EXTI0_IRQHandlerEXTI1_IRQHandlerEXTI2_IRQHandlerEXTI3_IRQHandlerEXTI4_IRQHandlerEXTI9_5_IRQHandlerEXTI15_10_IRQHandler
STM32 有5個時鐘源:HSI、HSE、LSI、LSE、PLL。①、HSI是高速內(nèi)部時鐘,RC振蕩器,頻率為8MHz,精度不高。②、HSE是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率范圍為4MHz~16MHz。③、LSI是低速內(nèi)部時鐘,RC振蕩器,頻率為40kHz,提供低功耗時鐘。④、LSE是低速外部時鐘,接頻率為32.768kHz的石英晶體。⑤、PLL為鎖相環(huán)倍頻輸出,其時鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。
UCOS有一個任務(wù)調(diào)度機制,根據(jù)任務(wù)的優(yōu)先級進行調(diào)度。
一個是硬件中斷, 那么系統(tǒng)會將當前任務(wù)有關(guān)變量入棧,然后執(zhí)行中斷服務(wù)程序,執(zhí)行完成后出棧返回.
另一個是任務(wù)之間的切換,使用的方法就是任務(wù)調(diào)度,每一個任務(wù)有自己的棧,順度也是一樣的入棧,然后執(zhí)行另一個程序,然后出線返回。
信號量:
參看:ucosII 信號量使用總結(jié)(舉例講解)
信號量用于:
1.控制共享資源的使用權(quán)(滿足互斥條件)
2.標志某時間的發(fā)生
3.使2個任務(wù)的行為同步
作為互斥條件,信號量初始化為1。
實現(xiàn)目標:調(diào)用串口發(fā)送命令,必須等待返回“OK”字符過后,才能發(fā)送下一條命令。每個任務(wù)都有可能使用到此發(fā)送函數(shù),不能出現(xiàn)沖突!
概念:
(1)消息隊列實際上就是郵箱陣列。
(2)任務(wù)和中斷都可以將一則消息放入隊列中,任務(wù)可以從消息隊列中獲取消息。
(3)先進入隊列的消息先傳給任務(wù)(FIFO)。
(4)每個消息隊列有一張等待消息任務(wù)的等待列表,如果消息列中沒有消息,則等待消息的任務(wù)就被掛起,直到消息到來。
串口接收程序中的接收緩沖區(qū)。
儲存外部事件。
結(jié)構(gòu)為:幀頭(SDTC)+幀長度+指令+流水號+數(shù)據(jù)+CRC校驗。
linux 免費,安全,穩(wěn)定,應(yīng)用范圍廣,在嵌入式上,服務(wù)器上,家用機,都有廣泛應(yīng)用。
μC/OS-II Linux 都適合用在嵌入式上。但μC/OS-II 是專為嵌入式而設(shè)計,這樣的結(jié)果是,運行效率更高,占用資源更少。
linux 都可以用作服務(wù)器上,使用率高。linux 雖然不是專門針對服務(wù)器而開發(fā),但其源碼公開,完全可以修改,使得兩者差異不大,最主要的發(fā)行版redhat linux 就是在服務(wù)器上用得很多的系統(tǒng)。
$ git status
$cd -
$ git diff
$ git add .
$ git commit -s
Fuction: 修改代碼的功能
Ticket: 對應(yīng)Bug號
注意:每一個文件夾下都要重新提一次。
6、查看提交代碼
$ tig .
$git commit --amend
:x ( 寫入文件并退出)
8、推送到服務(wù)器
$ git push origin HEAD:refs/for/master
(1)freeRTOS只支持TCP/IP, uCOSii則有大量外延支持,比如FS, USB, GUI, CAN等的支持。(我們用于tbox要用到CAN,所以選擇uCOSii)
(2)freeRTOS 是在商業(yè)上免費應(yīng)用。uCOSii在商業(yè)上的應(yīng)用是要付錢的。
(3)任務(wù)間通訊freeRTOS只支持隊列, 信號量, 互斥量。uCOSii除這些外,還支持事件標志組,郵箱。
(4)理論上講,freeRTOS 可以管理超過64個任務(wù),而uCOSii只能管理64個。
那么從μC/OS-II到μC/OS-III有哪些不同的地方呢?增加了什么,我們看改動還是很大的。一個是原來只有0~63個優(yōu)先級,而且優(yōu)先級不能重復(fù),現(xiàn)在允許幾個任務(wù)使用同一個優(yōu)先級,在同一個優(yōu)先級里面,支持時間片調(diào)度法;第二個是允許用戶在程序運行中動態(tài)配置實時操作系統(tǒng)內(nèi)核資源,比如,任務(wù)、任務(wù)棧、信號量、事件標志組、消息隊列、消息數(shù)、互斥型信號量、存儲塊劃分和定時器,可以在程序運行中變更。這樣,用戶可以避免在程序編譯過程中出現(xiàn)資源不夠分配的問題。在資源復(fù)用上,也做了一些改進。μC/OS-II中,最多任務(wù)數(shù)有64個,到了版本2.82以后是256個,μC/OS-III中,用戶可以由任意多的任務(wù)、任意多的信號量、互斥型信號量、事件標志、消息列表、定時器和任意分配的存儲塊容量,僅受限于用戶CPU可以使用的RAM量。這個也是一個很大的擴展。(問:邵老師,它的這個數(shù)是啟動時就固定的,還是啟動后隨便定?)它是配置的時候可以自由定義的,只有你的RAM足夠大的話。第四點是增加了很多功能,功能總是越來越多的,大伙可以看一下的。原來這些功能在μC/OS-II里面是沒有的。
(1)感知層:負責信息采集和物物之間的信息傳輸,信息采集的技術(shù)包括傳感器、條碼和二維碼、 RFID射頻技術(shù)、音視頻等多媒體信息,信息傳輸包括遠近距離數(shù)據(jù)傳輸技術(shù)、自組織組網(wǎng)技術(shù)、協(xié)同信息處理技術(shù)、信息采集中間件技術(shù)等傳感器網(wǎng)絡(luò)。感知層是實現(xiàn)物聯(lián)網(wǎng)全面感知的核心能力,是物聯(lián)網(wǎng)中包括關(guān)鍵技術(shù)、標準化方面、產(chǎn)業(yè)化方面亟待突破的部分,關(guān)鍵在于具備更精確、更全面的感知能力,并解決低功耗、小型化和低成本的問題。
(2)網(wǎng)絡(luò)層:是利用無線和有線網(wǎng)絡(luò)對采集的數(shù)據(jù)進行編碼、認證和傳輸,廣泛覆蓋的移動通信網(wǎng)絡(luò)是實現(xiàn)物聯(lián)網(wǎng)的基礎(chǔ)設(shè)施,是物聯(lián)網(wǎng)三層中標準化程度昀高、產(chǎn)業(yè)化能力昀強、昀成熟的部分,關(guān)鍵在于為物聯(lián)網(wǎng)應(yīng)用特征進行優(yōu)化和改進,形成協(xié)同感知的網(wǎng)絡(luò)。
(3)應(yīng)用層:提供豐富的基于物聯(lián)網(wǎng)的應(yīng)用,是物聯(lián)網(wǎng)發(fā)展的根本目標,將物聯(lián)網(wǎng)技術(shù)與行業(yè)信息化需求相結(jié)合,實現(xiàn)廣泛智能化應(yīng)用的解決方案集,關(guān)鍵在于行業(yè)融合、信息資源的開發(fā)利用、低成本高質(zhì)量的解決方案、信息安全的保障以及有效的商業(yè)模式的開發(fā)。
創(chuàng)建動態(tài)內(nèi)存分區(qū)函數(shù)OSMemCreate();
請求獲得內(nèi)存塊函數(shù)OSMemGet();
釋放內(nèi)存塊函數(shù)OSMemPut();
睡眠狀態(tài)、就緒狀態(tài)、運行狀態(tài)、等待狀態(tài)(等待某一事件發(fā)生)和中斷服務(wù)狀態(tài)。
(1)12bit分辨率(2)自動校準(3)可編程數(shù)據(jù)對齊(轉(zhuǎn)換結(jié)果支持左對齊或右對齊方式存儲在16位數(shù)據(jù)寄存器)(4)單次和連續(xù)轉(zhuǎn)換模式
(1)打開HSE,等待就緒后,設(shè)置Flash等待操作。(2)設(shè)置AHB,APB1,APB2分頻系數(shù),確定他們各自和系統(tǒng)時鐘的關(guān)系。(3)設(shè)置CFGR寄存器確定PLL的時鐘來源和倍頻系數(shù)(HSE外部8M*9倍=72MHz)。(4)使能PLL,將系統(tǒng)時鐘源切換到PLL.
(1)數(shù)組越界操作;(2)內(nèi)存溢出,訪問越界;(3)堆棧溢出,程序跑飛;(4)中斷處理錯誤;
(1)在startup_stm32f10x_cl.s里找到HardFault_Handler的地址重映射,并重新編寫,讓其跳轉(zhuǎn)到HardFaultHandle函數(shù)。
(2)打印查看R0、R1、R2、R3、R12、LR、PC、PSR寄存器。(3) 查看Fault狀態(tài)寄存器組(SCB->CFSR和SCB->HFSR)
參看:Cortex-M3和Cortex-M4 Fault異常應(yīng)用之一 ----- 基礎(chǔ)知識
AT+CTTS=1,”
6B228FCE4F7F75288BED97F3540862107CFB7EDF”
內(nèi)容是“歡迎使用語音合成系統(tǒng)”,模塊收發(fā)中文短信就是unicode編碼,所以很容易將短信朗讀出來;
(2)直接輸入文本,普通字符采用ASIIC碼,漢字采用GBK編碼。
AT+CTTS=2,”歡迎使用語音合成系統(tǒng)”
通過SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC))//1ms定時器
uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /*!< System Clock Frequency (Core Clock) */
#define SYSCLK_FREQ_72MHz 72000000
#define OS_TICKS_PER_SEC 1000 /* Set the number of ticks in one second
參看:有限狀態(tài)機FSM詳解及其實現(xiàn)
//橫著寫
void event0func(void)
{
switch(cur_state)
{
case State0:
action0;
cur_state = State1;
break;
case State1:
action1;
cur_state = State2;
break;
case State2:
action1;
cur_state = State0;
break;
default:break;
}
}
void event1func(void)
{
switch(cur_state)
{
case State0:
action4;
cur_state = State1;
break;
default:break;
}
}
void event2func(void)
{
switch(cur_state)
{
case State0:
action5;
cur_state = State2;
break;
case State1:
action6;
cur_state = State0;
break;
default:break;
}
}
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1377瀏覽量
40327 -
STM32
+關(guān)注
關(guān)注
2270文章
10910瀏覽量
356622 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4338瀏覽量
62767 -
GPIO
+關(guān)注
關(guān)注
16文章
1213瀏覽量
52184 -
stm32f1
+關(guān)注
關(guān)注
1文章
56瀏覽量
12224
原文標題:解答:
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論