色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式面試知識點總結(jié)--STM32篇

硬件攻城獅 ? 來源:CSDN-聚優(yōu)致成 ? 2023-03-26 09:36 ? 次閱讀

一、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,I2CCAN,串口2345,普通TIM,PWR

GPIO框圖剖析:
參看:STM32-GPIO詳解

7e588de8-ca4e-11ed-bfe3-dac502259ad0.png

四、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;

7e6aba68-ca4e-11ed-bfe3-dac502259ad0.jpg

(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時候的是高電平,第一個邊沿就是從低變到高,所以是上升沿;

7e890c2a-ca4e-11ed-bfe3-dac502259ad0.png

問題三:該如何確定使用哪種模式?
(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)。

7e9d50e0-ca4e-11ed-bfe3-dac502259ad0.png

解答:

參看: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ù)格式?
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

解答:

參看:STM32開發(fā) – CAN總線詳解

八、DMA

問題一:DMA介紹?
直接存儲器存取(DMA) 用來提供在外設(shè)和存儲器之間或者存儲器和存儲器之間的高速數(shù)據(jù)傳輸。無須CPU干預(yù),數(shù)據(jù)可以通過DMA快速地移動,這就節(jié)省了CPU的資源來做其他操作。

問題一:DMA傳輸模式有幾種?
DMA_Mode_Circular 循環(huán)模式DMA_Mode_Normal 正常緩存模式應(yīng)用場景:GPS、藍牙,都是用的循環(huán)采集,DMA_Mode_Circular模式。

解答:

參看:STM32開發(fā) – DMA詳解

一個比較重要的函數(shù),獲取當前剩余數(shù)據(jù)量大小,根據(jù)設(shè)置的接收buff大小減去當前剩余數(shù)據(jù)量 ,得到當前接收數(shù)據(jù)大小。

九、中斷

問題一:描述一下中斷的處理流程?
(1)初始化中斷,設(shè)置觸發(fā)方式是上升沿/下降沿/雙沿觸發(fā)。(2)觸發(fā)中斷,進入中斷服務(wù)函數(shù)

問題二:STM32的中斷控制器支持多少個外部中斷?
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開發(fā) – 外部中斷詳解

十、STM32有幾個時鐘源?
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。

解答:

參看:STM32開發(fā) – 時鐘系統(tǒng)詳解

十一、RTOS的任務(wù)是怎么寫的?如何切出這個任務(wù)?

解答:

一個任務(wù),也稱作一個線程。
UCOS有一個任務(wù)調(diào)度機制,根據(jù)任務(wù)的優(yōu)先級進行調(diào)度。
一個是硬件中斷, 那么系統(tǒng)會將當前任務(wù)有關(guān)變量入棧,然后執(zhí)行中斷服務(wù)程序,執(zhí)行完成后出棧返回.
另一個是任務(wù)之間的切換,使用的方法就是任務(wù)調(diào)度,每一個任務(wù)有自己的棧,順度也是一樣的入棧,然后執(zhí)行另一個程序,然后出線返回。

并非是每一任務(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ù)間的通信的,還有全局變量。
信號量:
參看:ucosII 信號量使用總結(jié)(舉例講解)
信號量用于:
1.控制共享資源的使用權(quán)(滿足互斥條件)
2.標志某時間的發(fā)生
3.使2個任務(wù)的行為同步

應(yīng)用實例:互斥信號量
作為互斥條件,信號量初始化為1。
實現(xiàn)目標:調(diào)用串口發(fā)送命令,必須等待返回“OK”字符過后,才能發(fā)送下一條命令。每個任務(wù)都有可能使用到此發(fā)送函數(shù),不能出現(xiàn)沖突!

郵箱(消息郵箱):

消息隊列:
概念:
(1)消息隊列實際上就是郵箱陣列。
(2)任務(wù)和中斷都可以將一則消息放入隊列中,任務(wù)可以從消息隊列中獲取消息。
(3)先進入隊列的消息先傳給任務(wù)(FIFO)。
(4)每個消息隊列有一張等待消息任務(wù)的等待列表,如果消息列中沒有消息,則等待消息的任務(wù)就被掛起,直到消息到來。

應(yīng)用場景:
串口接收程序中的接收緩沖區(qū)。
儲存外部事件。

十三、項目使用了自定義協(xié)議,是什么結(jié)構(gòu)?

解答:

了解過Modbus協(xié)議。
結(jié)構(gòu)為:幀頭(SDTC)+幀長度+指令+流水號+數(shù)據(jù)+CRC校驗。

十四、uCOSII和Linux的差異?

解答:

μC/OS-II是專門為計算機的嵌入式應(yīng)用設(shè)計的,μC/OS-II 具有執(zhí)行效率高、占用空間小、實時性能優(yōu)良和可擴展性強等特點, 最小內(nèi)核可編譯至 2KB。μC/OS-II 已經(jīng)移植到了幾乎所有知名的CPU 上。
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提交代碼

問題:Git提交代碼過程?

解答:

1、顯示工作路徑下已修改的文件:

$ git status

2、進入修改文件目錄:

$cd -

3、顯示與上次提交版本文件的不同:

$ git diff

4、把當前所有修改添加到下次提交中:

$ git add .

5、添加相關(guān)功能說明,(第一次提交使用這個)

$ git commit -s

其中還要注明:
Fuction: 修改代碼的功能
Ticket: 對應(yīng)Bug號
注意:每一個文件夾下都要重新提一次。
6、查看提交代碼

$ tig .

7、請勿修改已發(fā)布的提交記錄! (以后提交使用這個)

$git commit --amend

命令模式下:
:x ( 寫入文件并退出)
8、推送到服務(wù)器

$ git push origin HEAD:refs/for/master

十六、ucosii和ucosiii和freeRTOS比較

問題一:三者比較?

解答:

ucosii和freeRTOS比較:
(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個。

ucosii和ucosiii比較:
那么從μ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里面是沒有的。

十七、低功耗模式

問題一:低功耗模式有幾種?喚醒方式是什么?

解答:

7eba5582-ca4e-11ed-bfe3-dac502259ad0.png

十八、物聯(lián)網(wǎng)的架構(gòu)

問題一:物聯(lián)網(wǎng)的架構(gòu)分為幾層?每一層都負責哪些功能?

解答:

分三層,物聯(lián)網(wǎng)從架構(gòu)上面可以分為感知層、網(wǎng)絡(luò)層和應(yīng)用層,
(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ā)。

十九、內(nèi)存管理

問題一:UCOS中內(nèi)存管理的方法有哪些?

解答:

系統(tǒng)通過與內(nèi)存分區(qū)相關(guān)聯(lián)的內(nèi)存控制塊來對內(nèi)存分區(qū)進行管理。

動態(tài)內(nèi)存管理函數(shù)有:
創(chuàng)建動態(tài)內(nèi)存分區(qū)函數(shù)OSMemCreate();
請求獲得內(nèi)存塊函數(shù)OSMemGet();
釋放內(nèi)存塊函數(shù)OSMemPut();

二十、Ucos中任務(wù)的狀態(tài)有哪幾種?畫出任務(wù)狀態(tài)之間的關(guān)系圖?

解答:

有5種狀態(tài):
睡眠狀態(tài)、就緒狀態(tài)、運行狀態(tài)、等待狀態(tài)(等待某一事件發(fā)生)和中斷服務(wù)狀態(tài)。

UCOSII任務(wù)的5個狀態(tài)轉(zhuǎn)換關(guān)系:

7ed800dc-ca4e-11ed-bfe3-dac502259ad0.png

二十一、ADC

問題一:簡述STM32的ADC系統(tǒng)的功能特性?
(1)12bit分辨率(2)自動校準(3)可編程數(shù)據(jù)對齊(轉(zhuǎn)換結(jié)果支持左對齊或右對齊方式存儲在16位數(shù)據(jù)寄存器)(4)單次和連續(xù)轉(zhuǎn)換模式

解答:

參看:STM32開發(fā) – ADC詳解

二十二、系統(tǒng)時鐘

問題一:簡述設(shè)置系統(tǒng)時鐘的基本流程?
(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.

解答:

二十三、HardFault_Handler處理

問題一:造成原因?
(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)

解答:

參看:STM32開發(fā) – HardFault_Handler處理
參看:Cortex-M3和Cortex-M4 Fault異常應(yīng)用之一 ----- 基礎(chǔ)知識

二十四、TTS語音合成方法

問題一:sim7600 TTS語音使用什么方法?

解答:

(1)使用unicode編碼合成聲音
AT+CTTS=1,”
6B228FCE4F7F75288BED97F3540862107CFB7EDF”
內(nèi)容是“歡迎使用語音合成系統(tǒng)”,模塊收發(fā)中文短信就是unicode編碼,所以很容易將短信朗讀出來;
(2)直接輸入文本,普通字符采用ASIIC碼,漢字采用GBK編碼。
AT+CTTS=2,”歡迎使用語音合成系統(tǒng)”

二十五、定時器

問題一:已知STM32的系統(tǒng)時鐘為72MHz,如何設(shè)置相關(guān)寄存器,實現(xiàn)20ms定時?

解答:

參看:STM32開發(fā) – Systick定時器
通過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

如果需要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)機。
參看:有限狀態(tài)機FSM詳解及其實現(xiàn)

假設(shè)狀態(tài)機的狀態(tài)轉(zhuǎn)換由下表所示:

7eecbe8c-ca4e-11ed-bfe3-dac502259ad0.png

實現(xiàn):(使用switch語句)

//橫著寫
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;
    }
}

二十八、器件選型

問題一:STM32F407 VS STM32F103 主要功能及資源對比?

解答:

參看:STM32F407 VS STM32F103 主要功能及資源對比

7f05328c-ca4e-11ed-bfe3-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(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)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式C語言知識點總結(jié)

    怎么才能做好嵌入式開發(fā)?學好C語言吧!今天就來推薦一大佬寫的嵌入式C語言知識點總結(jié)。
    發(fā)表于 09-27 09:53 ?1188次閱讀

    嵌入式內(nèi)存管理的知識點總結(jié)

    任何程序運行起來都需要分配內(nèi)存空間存放該進程的資源信息的,C程序也不例外。C程序中的變量、常量、函數(shù)、代碼等等的信息所存放的區(qū)域都有所不同,不同的區(qū)域又有不同的特性。C語言學習者、尤其是在學習嵌入式的朋友,這些知識點一定要吃透!
    發(fā)表于 08-17 09:33 ?532次閱讀
    <b class='flag-5'>嵌入式</b>內(nèi)存管理的<b class='flag-5'>知識點</b><b class='flag-5'>總結(jié)</b>

    嵌入式C/單片機C/標準C知識點

      深圳發(fā)燒友嵌入式實訓(xùn)學院總結(jié)了一些C語言的知識點:  僅供大家參考,想一起和我討論嗎,可以加一下我的QQ1187729241,dong老師  一、嵌入式C/單片機C/標準C
    發(fā)表于 10-24 14:42

    關(guān)于嵌入式DSP上的視頻編解碼的知識點總結(jié)的太棒了

    關(guān)于嵌入式DSP上的視頻編解碼的知識點總結(jié)的太棒了
    發(fā)表于 06-08 06:49

    C語言程序小知識點總結(jié)

    C語言總結(jié)stm32嵌入式開發(fā))文章目錄C語言總結(jié)stm32嵌入式開發(fā))c程序小
    發(fā)表于 11-05 07:45

    推薦一大佬寫的嵌入式C語言知識點總結(jié)

    怎么做好嵌入式?相信這個問題無論問誰你都會得到一句學好C語言!今天推薦一大佬寫的嵌入式C語言知識點總結(jié),非常值得一讀。從語法上來說C語言并
    發(fā)表于 12-14 08:09

    嵌入式C語言必學知識點匯總

    導(dǎo)讀:怎么做好嵌入式?相信這個問題無論問誰你都會得到一句學好C語言!今天推薦一大佬寫的嵌入式C語言知識點總結(jié),非常值得一讀。從語法上來說C
    發(fā)表于 12-15 07:43

    嵌入式C語言的知識點匯總,絕對實用

    了一些這方面的經(jīng)驗和思考,就希望總結(jié)下來,系統(tǒng)的闡述嵌入式C語言的重要知識點,就是這篇文章的由來。本文以自己在嵌入式上的實踐為基礎(chǔ),在結(jié)合相關(guān)資料, 闡述
    發(fā)表于 02-17 06:10

    嵌入式知識點總結(jié)

    嵌入式知識點總結(jié)(arm嵌入式開發(fā)led過程)-嵌入式知識點
    發(fā)表于 07-30 14:20 ?23次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>知識點</b><b class='flag-5'>總結(jié)</b>

    嵌入式】基于ARM的嵌入式Linux開發(fā)總結(jié)

    前言嵌入式知識點復(fù)習一嵌入式知識點復(fù)習二 --體系結(jié)構(gòu)嵌入式知識點復(fù)習三 --ARM-LINUX
    發(fā)表于 10-19 18:32 ?26次下載
    【<b class='flag-5'>嵌入式</b>】基于ARM的<b class='flag-5'>嵌入式</b>Linux開發(fā)<b class='flag-5'>總結(jié)</b>

    嵌入式知識點

    嵌入式知識點復(fù)習一1、 嵌入式系統(tǒng)的一般組成結(jié)構(gòu)2、嵌入式硬件系統(tǒng)的結(jié)構(gòu)(1)嵌入式處理器+外圍硬件(2)常見的外圍硬件:電源、時鐘、內(nèi)存、
    發(fā)表于 10-21 12:06 ?6次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>知識點</b>

    嵌入式linux 開發(fā)小知識總結(jié)

    目標? 博文旨在總結(jié)自己在嵌入式linux開發(fā)過程中遇到的坑?、一些小知識點的匯總。?等哪天發(fā)展到遠離代碼了,還能回一下當年的英姿。
    發(fā)表于 11-02 12:06 ?15次下載
    <b class='flag-5'>嵌入式</b>linux 開發(fā)小<b class='flag-5'>知識</b><b class='flag-5'>總結(jié)</b>

    嵌入式C語言知識點總結(jié)

    導(dǎo)讀:怎么做好嵌入式?相信這個問題無論問誰你都會得到一句學好C語言!今天推薦一大佬寫的嵌入式C語言知識點總結(jié),非常值得一讀。
    的頭像 發(fā)表于 04-13 11:12 ?2728次閱讀

    C語言與C++面試知識點總結(jié)

    相對而言,C語言和C++相關(guān)的面試題比較少見,沒有Java方向?qū)懙娜四敲炊?,這是一 C 語言與 C++面試知識點總結(jié)的文章,個人感覺非常難
    的頭像 發(fā)表于 05-12 14:59 ?1473次閱讀

    C語言與C++面試知識點總結(jié)

    相對而言,C語言和C++相關(guān)的面試題比較少見,沒有Java方向?qū)懙娜四敲炊?,這是一 C 語言與 C++面試知識點總結(jié)的文章,個人感覺非常難
    的頭像 發(fā)表于 05-13 11:59 ?1874次閱讀
    主站蜘蛛池模板: 俄罗斯美幼| 扒开美女的内衣亲吻漫画| 青青视频国产色偷偷| 久久久无码精品亚洲日韩按摩 | 久久精品在现线观看免费15| 国产色青青视频在线观看| 公交车轮C关老师| 成人免费视频网站www| BL文高H强交| caoporn 超碰免费视频| 91福利在线观看| 99pao成人国产永久免费视频| 最新老头恋老OLDMAN| 九九久久精品国产| 国产亚洲精品精品精品| 国产午夜精品久久理论片小说| 国产精品色吧国产精品| 国产露脸无码A区久久| 国产在线观看免费观看不卡| 国拍在线精品视频免费观看| 国语大学生自产拍在线观看| 娇喘高潮教室h| 久久亚洲电影www电影网| 久久午夜免费视频| 免费鲁丝片一级在线观看| 欧美久久综合性欧美| 日本伦理电影聚| 无码日韩人妻精品久久蜜桃入口| 我在厨房摸岳的乳HD在线观看| 午夜宅宅伦电影网| 亚洲精品无码国产爽快A片百度| 亚洲在线中文无码首页| 在线免费中文字幕| 99久热这里精品免费| 村妇偷人内射高潮迭起| 国产精品免费视频播放| 好男人午夜www视频在线观看| 久久精品亚洲AV中文2区金莲| 妹妹好色网| 色就色 综合偷拍区欧美| 午夜向日葵高清在线观看|