98国产精品综合一区二区三区,国产福利视频,男人添女人囗交做爰视频,日本免费一区二区三区视频观看

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術中心 >> 單片機入門 >> STM32學習經(jīng)驗總結

STM32學習經(jīng)驗總結

關鍵字:STM32 作者:admin 來源:不詳 發(fā)布時間:2018-05-18  瀏覽:14

 1. 今天把普中開發(fā)板上的RS232芯片燒壞了,所以接下來要完成stlink的使用,來下載程序,同時也嘗試調試程序,也算是被逼的去學一個很有用的工具,本來我都不想學stlink的。

2. 先學習一下STM32的定時器,過程中,加入stlink的下載和調試。

3. 定時器:STM32分高級定時器(TIM1和TIM8),通用定時器(TIM2-5),基本定時器(TIM6,7)。

4. 通用定時器(TIM2-5):1)位于低速APB1總線上。2)預分頻:將計數(shù)器時鐘頻率降低。3)各個通用定時器之間是完全獨立的。4)向上計數(shù):從0到加載值,其他類似。5)定時器的時鐘來源,可以來源于內部的APB1時鐘倍頻提供,這是時鐘來源之一,但是用的比較多,也比較簡單。

5. 通用定時器工作過程,只要有印象就可以,在配置的時候知道在配置什么。

6. 這是時鐘的計算方法,其中APB1的時鐘來源于AHB,如果APB1 = AHB,也就是APB1 = 1 * AHB,那么,此時的CK_INT = APB1,而如果APB1 = AHB / 2,那么這時候CK_INT = 2 * APB1的時鐘,得到定時器的原始時鐘。

7. 溢出時間 Tout = (ARR + 1)*(PSC+1) / TCLK,就是Tclk /(PSC+1)的倒數(shù),得到原始時鐘被分頻后的頻率,倒數(shù)就是時鐘周期,那么再乘以重裝值,就得到了溢出時間。一般時鐘TCLK為72MHz。

8. 現(xiàn)在為戰(zhàn)艦開發(fā)板,LED0->PB5紅色 LED1->PE5藍色

9. 注意:在要使用相應的庫函數(shù)的時候,需要添加庫函數(shù)的.c文件到FWLIB中,但是在使用template工程模板的時候不用考慮,已經(jīng)全部加載進去了,我們只要寫自己的功能函數(shù)就可以。

10. 定時器初始化步驟:1)使能定時器時鐘APB1。2)初始化定時器,配置ARR,PSC,以及計數(shù)方式。3)使能定時器中斷,配置NVIC,不要忘了在主函數(shù)中加入設置中斷優(yōu)先級分組的一句!4)使能定時器自身。5)編寫中斷服務函數(shù)。具體參數(shù)配置見功能函數(shù)中注釋。

11. 注:電平的翻轉,好像可以使用~ 或者 !實現(xiàn)。

————————————

1. 在學習定時器PWM波之前,先學一下stlink如何調試程序的。

2. stlink調試:1)首先關于引腳,PA13-15 以及 PB3 PB4都被默認為JTAG的引腳,所以工程中盡量不要使用這些引腳。2)在debug窗口查看變量的變化,可以選中程序中的變量,右擊,然后add towatch1,就可以了。

3. 注:仿真分軟件仿真和硬件仿真,那么軟件仿真時,會有串口數(shù)據(jù)輸出,但是硬件仿真的時候必須使用串口調試軟件才能看到串口打印的數(shù)據(jù),同理,邏輯分析也是這樣的,可以使用邏輯分析儀采集板子引腳,做邏輯分析,那么keil上的debug的用處是觀察變量,以及寄存器的變化,并且可以通過單步調試查看硬件執(zhí)行情況。好像并不是很有用。但是keil的load的確方便,直接就可以下到板子里,不用我另外使用軟件下載。

4. 定時器PWM:ARR值確定頻率,CCRx確定占空比信號,可以理解為一個臨界值。

6. 關于通道重映射問題:通道的重映射根據(jù)上圖,可以看到,定時器三的通道二的部分重映射正好可以映射到PB5,led燈輸出端,便于顯示。注:一旦設置TIM3為部分重映射,那么四個通道都重映射了,也就是現(xiàn)在CH1->PB4了,沒有專門單獨設置CH2的映射。

7. 關于PWM的工作過程設置問題:

8. 關于PWM工作模式問題:CCMR1控制的是PWM模式1還是2。模式1的話,當CNT < CCR時,輸出有效電平(有效電平到底是低電平還是高電平時根據(jù)CCER確定的),其余為無效電平;那么PWM模式2就和模式1相反。

9. 第7點,其中的CC1P為高極性,那么就是高電平有效。

10. //設置占空比,占空比=(CCRx/ARR)*100%或(TIM_Pulse/TIM_Period)*100%

TimOCInitStructure.TIM_Pulse= 400-1; 這里我理解的是,這個值就是被放入捕獲比較寄存器中,即CCRx中,用于輸出固定的占空比的PWM波。

————————————

1. 關于6050陀螺儀模塊問題

2. 今天開始著手平衡小車項目,藍牙模塊不用關心,只要知道可以連接,再判斷串口發(fā)來的指令即可。

3. 好像比較簡單的是使用DMP,通過結合DMP,可以將我們的原始數(shù)據(jù)轉換成四元素輸出,再通過四元素算出歐拉角,從而得到y(tǒng)awroll 和 pitch。

4. 因為做的是平衡小車,那么就不需要roll 和 yaw,直接通過pitch即可。

2016/4/1

1. 昨天卡在一個比較愚蠢的問題上,就是我很少自己配置工程什么的,所以當測試賣家發(fā)來的例程的時候,編譯不通過,最后發(fā)現(xiàn)是要在keil4下打開才可以用,期中涉及的問題我也不想深究,畢竟配置工程什么的不是我學習的重點。

2. 今天總結了一條經(jīng)驗:解決問題,一定要善于使用最簡單的方法!不做無用功,也不能浪費寶貴的時間!比如我發(fā)現(xiàn)他們的例程下進去,小車根本就不能動,排查問題,肯定是資料問題,我問了賣家以后,他們發(fā)了新的資料,成了!工程編譯錯誤,網(wǎng)上百度一下,好像keil4下可以正常使用,那就裝一個keil4,成了!這就是最簡單的解決問題方法,不要自己死磕,不能轉牛角尖。

3. MPU6050:首先我要做的就是能夠使用例程,將MPU獲取的數(shù)據(jù)打印出來,這樣便于調試,也便于我接下來的學習;然后深入理解6050的工作方式和通信方式(IIC通信);再學習6050在DMP方法下,輸出的數(shù)據(jù)怎么可以整定成小車的姿態(tài),那么平衡小車中比較關鍵的內容就結束了!

因為還是寫成項目日志比較清楚,所以準備寫項目日志,暫停寫直至平衡小車項目結束,重新開始學戰(zhàn)艦開發(fā)板的其他模塊。

————————————

 TFTLCD

1. 今天是平衡小車結束后,開始繼續(xù)學習STM32的第一天,上次老師提出來要在mini2440上做攝像頭循跡小車,又是小車!天吶~反正我已經(jīng)快受不了了,而且arm的裸機開發(fā)和STM很相似,根本就沒什么大的差別,而且arm是mini板,外設很少,學習模塊的機會很少,所以我覺得,以后再STM32上做裸機開發(fā),也可以嘗試移植uC/OS系統(tǒng),這樣配套的學習,肯定比arm上裸機開發(fā)要好!

2. 我現(xiàn)在用的是戰(zhàn)艦的3.5寸屏幕,IC為NT35310,電阻屏,16位并口驅動,分辨率為320*480,挺高的分辨率了已經(jīng)算是。

3. 我現(xiàn)在想采用的是16位模式下,RGB565存儲數(shù)據(jù),這個型號的驅動芯片是NT35310(ID5310)。通過一些命令,我們可以設置GRAM(LCD的顯存)的指針的增長方向,也就是一個個像素點的填寫方向,所以只要設置一次開始寫的位置,就可以把數(shù)據(jù)連續(xù)的填寫,在SC++(X坐標起始位置)碰到EC(X坐標終止位置),這時候EC會返回SC,但同時SP++,從下一行開始填寫像素點(在設置了指針增長方式為從左向右,從上往下模式時),而不需要關心位置,極大的方便了我們編程,速度也比每次都指定坐標的LCD屏要快。

4. 填寫像素時,步驟為:設置起始位置---發(fā)送寫GRAM命令---寫入GRAM。

5. FSMC:靈活的靜態(tài)存儲控制器。這是STM32板子上帶有的對SRAM、NAND Flash、NOR Flash等進行操作的控制器,那么現(xiàn)在對LCD的操作就相當于FSMC對一個SRAM在進行操作。

6. 直接切入LCD使用吧,反正原理大差不差的理解了,然后就觀察他們是如何使用的就可以。

2016/4/20 IIC總線 由飛利浦公司提出

1. 因為IIC總線是一種非常常見而且普及的總線協(xié)議,用來對各種模塊的寄存器讀寫從而進行配置,類似的還有SPI總線協(xié)議,雖然單片機里學過了,但是也差不多忘了,所以今天再溫習一下。

2. 今天測試的也是例程上的,使用IIC對24C02進行讀寫操作,通過LCD屏幕顯示。

3. IIC:有起始信號,停止信號,應答信號。

4. 硬件上已經(jīng)將PB6接到了IIC_SCL上,將PB7接到了IIC_SDA上,這是因為這兩個端口可以端口復用成IIC總線的兩根線,模式時推挽輸出。

5. GPIO:關于靈活控制某個端口為輸入輸出模式:

SDA也就是PB7作為輸出的時候,使用50MHz的輸出速度,做普通輸出(CNF1 CNF0 MODE1 MODE0 =0011);當SDA作為輸入時,使用復用功能,MODE保留(CNF1 CNF0 MODE1 MODE0 = 1000)

6. IIC使用流程,我個人總結是這樣的:1)配置IIC服用端口;2)檢測IIC器件是否存在;3)由IIC發(fā)出起始信號,同時發(fā)送器件地址,接著就等待應答信號的產(chǎn)生;4)等待到了應答信號就可以發(fā)送數(shù)據(jù)出去,同樣也需要進行應答信號的檢測;5)那么讀取其實也是類似的,具體的時序方面,其實就是根據(jù)手冊上的時序圖模擬一遍,注意位操作的正確性就可以了。

7. SPI協(xié)議:接著溫習SPI協(xié)議,這個協(xié)議其實在我用單片機接NRF24L01射頻通信模塊的時候已經(jīng)有了比較深刻的理解了,為什么說深刻,因為那時候還不想現(xiàn)在這么浮躁,會耐下性子,一步一步的從通信協(xié)議,配置寄存器開始做起,最后花了五六天才基本搞通互發(fā),第一個煎熬的模塊。

8. SPI是摩托羅拉公司提出的總線協(xié)議,這是一種同步,高速,全雙工的串行通信協(xié)議。

9. 關于兩個設置值,用來決定時鐘的空閑信號和采樣時機的CPOL和CPHA。

10. CPOL=0,串行時鐘的空閑狀態(tài)為低電平,反之為高電平;CPHA=0,則在第一個時鐘跳變時做采樣,CPHA=1,則在第二個時鐘跳變時做采樣。

11. 如何記憶MISO和MOSI,可以拆開理解為Master In Slave Out和 Master Out Slave In。

12. 根據(jù)我之前的理解,通俗的講,SPI協(xié)議就是,小時候玩兒的你拍一我拍一,這種節(jié)奏就是時鐘,這種擊掌的過程就是數(shù)據(jù)線的傳輸,其實也還是不夠貼切。應該是像兩個小朋友交換同樣個數(shù)的玩具,但是他們選擇一換一的節(jié)奏逐個交換,直至他們的玩具全部交換完成,那么一個小朋友就有了原來屬于另一個小朋友的玩具,那么這些玩具就是數(shù)據(jù),用來裝玩具的就是寄存器,用來以一定節(jié)奏交換就是時鐘。

13. 現(xiàn)在例程上使用的是PB12做W25Q128的CS片選,PB13做SCK,PB14做MISO,PB15做MOSI。

——————————————

485協(xié)議

1. 485協(xié)議:處于物理層,半雙工,多點通信,它類似于RS232,但是它更加穩(wěn)定可靠,傳輸距離比RS232要長,抗干擾性也不錯,所以這個協(xié)議還是有必要做一些了解的。

2. 戰(zhàn)艦上使用的是SP3485芯片,該芯片的原理圖清楚的說明,當RE信號為低的時候,為接收模式,當RE信號為高時,設為了發(fā)送模式。

3. 好吧,其實和串口的模式非常相似,只是兩者采用了不同的電壓作為高低電平,其余實在是沒多大差別。

————————————————————

1. CAN總線:也是一種串行通信協(xié)議,為現(xiàn)在歐洲汽車網(wǎng)絡的標準協(xié)議,可以實現(xiàn)在汽車的LAN中的高速、高質量的數(shù)據(jù)傳輸,已經(jīng)經(jīng)過ISO國際標準化的串行通信協(xié)議。它通過兩根線上的電位差來判斷電平,總線電平分為顯性電平和隱性電平,二者必有其一。

2. CAN總線的特點:可以根據(jù)優(yōu)先級來決裁;不需要“地址”這個概念,加入模塊方便;通信速度較快,也比較遠,在現(xiàn)場控制中足夠了;還有錯誤檢測反饋等功能,使之成為公認的最有前途的現(xiàn)場總線之一

3. CAN總線電平判斷:隱性電平是指CAN_L與CAN_H之間的電壓差為0V,而顯性電平為CAN_H與CAN_L之間的電壓差為2.5V左右。

4. CAN總線通過五個幀實現(xiàn):數(shù)據(jù)幀,遙控幀,錯誤幀,過載幀,幀間隔。

5. D:顯性電平,也就是0,這時壓差為2V左右;R:隱性電平,也就是1,這時的壓差為0V。那么優(yōu)先級仲裁就是通過顯性電平的多少判斷的,輸出的顯性電平多的優(yōu)先級高;一般先發(fā)起總線請求的優(yōu)先級要高于后來的,而且不能被打斷。

6. CAN控制器:有三個郵箱,用于發(fā)送!發(fā)送過程:空閑郵箱(存在空閑郵箱時)----掛號(等待郵箱成為最高優(yōu)先級)------預定(郵箱成為了最高優(yōu)先級)------發(fā)送(一旦總線空閑了,就可以進行發(fā)送)----空閑(發(fā)送完成以后,再次把總線變?yōu)榭臻e)。

7. CAN控制器:有三級FIFO用來緩存數(shù)據(jù)!接收過程:FIFO中有一個為空時,接收到有效數(shù)據(jù)----掛號一-----又一次收到有效數(shù)據(jù)-----掛號二------。。。。超過三次收到有效數(shù)據(jù)但是沒有被讀走的話,就會產(chǎn)生溢出,所以需要及時的讀取FIFO中的數(shù)據(jù)。

2016/4/24 攝像頭OV7670

1. OV7670是CMOS VGA圖像傳感器,通過類IIC的SCCB總線控制,VGA可高達30幀/秒。

2. VGA,即分辨率為640*480的輸出模式。QVGA,即分辨率為320*240的輸出模式,一般用這種,因為OV7670的FIFO也只夠存儲一幀的QVGA。

2016/6/11

時隔近兩個月,我又開始玩兒這個板子上的攝像頭了,因為參加比賽的需要,必須要把攝像頭原理和例程都消化,然后將攝像頭改為可以采集灰度圖像,并且可以靈活的設置圖像閥值。

1. 使用類似IIC的SCCB(串行攝像頭控制總線)控制總線,主要使用這個總線協(xié)議來對7670狀態(tài)配置。

——————————————————————————

上次又被考試打亂了,今天要搞一天。

1. 首先,OV7670正好可以存儲一幀的分辨率大小為320*240,即QVGA格式。

2. PCLK為像素時鐘,一般一個PCLK時鐘輸出一個像素,但要是一個像素為兩個字節(jié)大小,那么就需要兩個PCLK時鐘才能輸出一個完整的像素,例:RGB565。

3. VSYNC為幀同步信號,一幀出現(xiàn)一次。

4. HREF為行同步信號,這是根據(jù)分辨率中的多少行確定的,例如640*480的分辨率,那么一幀中就出現(xiàn)480次的這個行同步信號。

5. 圖像數(shù)據(jù)就是通過D[7-0]八根數(shù)據(jù)線輸出。

6. 根據(jù)時序圖可以看出,當行同步信號為高電平有效的時候,數(shù)據(jù)的輸出才為有效,那么再根據(jù)PCLK的上升沿MCU采集,下降沿數(shù)據(jù)改變,就可以實現(xiàn)圖像數(shù)據(jù)的讀取。(兩個字節(jié)的話,高字節(jié)在前)

7. 7670工作流程:首先攝像頭采集圖像數(shù)據(jù),然后存儲到FIFO芯片AL224B(384K),一般我們只要存儲一幀就夠了,再通過接口,使用MCU從這個FIFO芯片中讀取攝像頭之前采集的數(shù)據(jù)。

8.這是針對FIFO操作的對外接口,也就是攝像頭下面引出來的引腳。

9.從第一個幀同步信號開始,說明開始采集到了一幀,那么這時候讓寫指針復位,也就是從0地址開始寫入,再把寫使能使能,這時候FIFO中就會開始接收7670輸入的圖像數(shù)據(jù),在等待到第二個幀同步信號以后,說明一幀圖像采集完畢,這時候把寫使能禁止,然后讓MCU去讀取FIFO中的數(shù)據(jù),也不會讓新的數(shù)據(jù)沖掉之前的數(shù)據(jù),保證讀取的正確。

11. 注:PB3 4 為JTAG中使用到的接口,如果要把這兩個引腳作為普通的IO口,那么必須禁止JTAG,才能使得這兩個引腳作為普通IO使用。

12. 采用中斷獲取幀同步信號,然后在OV7670往FIFO中寫數(shù)據(jù)的同時,MCU也開始從FIFO中讀取數(shù)據(jù),這樣可以加快數(shù)據(jù)的采集。

2016/6/16

1. "Y"表示明亮度(Luminance或Luma),也就是灰階值;而"U"和"V" 表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用于指定像素的顏色。

2. 也就是說,我主要用到的就是Y分量。

3. 幾個重要的設置灰度圖像輸出的寄存器,需要進行了解。

寄存器地址

寄存器設置的值

       7654 3210

解釋

0x12

0x10 (0001 0000B)

通用控制寄存器,還是設置為QVGA格式輸出,輸出YUV編碼方式的圖像數(shù)據(jù)

0x3a

0x14 (0001 0100B)

行緩沖測試選項,使用固定的UV輸出,這兩個值就是0x67和0x68兩個寄存器的值。行緩沖輸出順序,由這個寄存器的【3】(0)和0x3d的【0】(0)兩位決定,對照發(fā)現(xiàn)為使用YUYV輸出,也就是Y:U:V=4:2:2。

0x3d

0x80 (1000 0000B)

普通控制寄存器,伽馬使能,同時和0x3a相互配合。

0x67

0x11 (0001 0001B)

填充U值的寄存器,值為0x11

0x68

0xff  (1111 1111B)

填充V值的寄存器,值為0xff

0x40

0xc0 (1100 0000B)

數(shù)據(jù)的輸出范圍為0x00-0xff。

4. 注:還是不是很理解輸出順序YUYV輸出,也就是Y:U:V=4:2:2。這個意思。

 

1. 設置完成以后,基本就可以實現(xiàn)灰度圖像的采集了,速度也挺快的。

2. 從網(wǎng)上了解了OV7670的特點以后,才明白之前的YUYV輸出順序的真正意義,其實不論Y還是U還是V都是八位二進制表示,也就是一個字節(jié)。那么YUYV輸出格式表明,我們在使用的時候,只要讀取第一個字節(jié)就可以獲取Y(亮度),這個亮度可以進一步的處理判斷,就可以通過閥值獲得二值圖像,也就是黑白圖像。

3.

4. 這是我衣服上的標志,我還添加了手動設置閥值的按鍵操作,便于以后的調試,在不同的光線條件下可以進行調整。

編輯:admin  最后修改時間:2018-05-18

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

抱着h不拔出来h| 人妻互换共享4p闺蜜疯狂互换| 美妙人妻系列| 他跨越山海而来电视剧免费观看| 强行扒开双腿玩弄av调教视频| 99久久精品日本一区二区免费| 老头猛挺进小雯的体内视频| 400部精品国偷自产在线| 国产精产国品一二三产区区别| 成人片黄网站色大片免费观看cn| 被黑人姿势猛到抽搐视频| 18禁裸乳无遮挡啪啪无码免费| 他用嘴巴含着我奶头吸怎么办| 亚洲综合久久日日躁综合| 欧美性猛交xxxx乱大交蜜桃| 欧美性xxxxx极品少妇小说| 欧美18videosex极品| 国产又色又爽又黄又免费| 久久精品午夜一区二区福利| 国产成人一区二区三区| 色狠狠色噜噜av天堂五区| 小妖精的奶头又喷奶水了视频| 97国产av传媒视频在线观看| 胖老太bbwbbwbbwbbw| 疯狂的交换小雅小姿1~6| 18一20亚洲gay无套| 成人h视频在线观看| 亚洲av无码一区二区乱子伦| 人妻熟人中文字幕一区二区| 天美传媒mv免费观看| 欧美日韩视费观看视频| 日韩无码专区| you jizz jizz japan日本| 女人做爰全过程免费观看美女| a片粗大的内捧猛烈进出男男小说| 射不出来| 国产av人人夜夜澡人人爽麻豆| 大炕上大战白胖老妇| 亚洲日韩欧美一区二区三区| 我帮妺妺洗澡忍不住c了她| 高h喷水荡肉爽文np肉色学校|