智慧型車競賽用到的是stc8h8k64u的晶元,編好的庫用的買晶元附帶的歷程,逐飛科技。記錄一下學習過程中遇到的問題及對應解決方案。
我的理解是stc8h是個核心板,然後將它裝在基板上,這裡用的是lqfp64封裝,由此產生了封裝圖(管腳圖),可以從圖中看到每個管腳的作用。
我買的是64pin的,意思是有64個引腳。
(1)isr.c、isr.h:
表示裡面裝的**是關於「中斷」的。
(2)exit.c、exit.h:
表示裡面是main中編寫用到的所有自定義函式。
exit.h裡面全是自定義的函式void彙總。
(3).c與.h
.c是**本身,.h是管腳的定義
(4)#include 「headfile.h」
表示引用自帶的所有庫
(5)所有自定義函式彙總
board.c:board_init、disableglobalirq、enableglobalirq
spi.c:spi_init、spi_change_pin、spi_change_mode
iic.c:iic_init、iic_change_pin
uart.c:uart_init、uart_putchar、uart_putbuff、uart_putstr
add.c:adc_init
tim.c:ctimer_count_init、ctimer_count_clean、pit_timer_ms
pwm.c:pwm_set_gpio、pwm_init、pwm_duty、pwm_freq
exit.c:exit_init
gpio.c:gpio_pull_set、gpio_mode
eeprom.c:iap_init、iap_set_tps、iap_read_bytes、iap_write_bytes、iap_erase_page、extern_iap_write_bytes
delay.c:delay_init、delay_ms、delay_us
nvic.c:nvic_setpriority
自定義(沒在庫函式中的):pin_init、speedctrl、
(1)光電感測器
管腳p7.0、p7.1、p7.2
(2)超聲波感測器
管腳p1.1
(3)直流電機
p2.0左邊電機輸入,p2.1左邊電機輸出
p2.2右邊電機輸入,p2.3右邊電機輸出
(1)#ifndef,防止標頭檔案被多重呼叫
csdn上對應描述
(2)進製轉換用——程式設計師計算器
例如0x80,0x表示這是十六進製制,那麼我們進入程式設計師計算器選擇hex(十六進製制模式),輸入「80」,得到需要的二進位制
1 0 0 0 0 0 0 0
csdn關於程式設計師計算器的講解
(3)紅外感測器是光電感測器的一種,別再問兩者區別了,包含關係。
(4)sbit與define:
define是乙個巨集的替換,相當於改名
sbit是定義乙個管腳
關於兩者的進一步討論
**(5)使能:乙個「允許訊號」,不使能表示不允許。baidu的定義
(6)懸空、高阻態:懸空指不接任何元器件;高阻態指無上下拉電阻,是除了輸入、輸出外的另一種狀態,相當於斷路
(7)mcu:指微控制器
(9)什麼叫:串列埠使用定時器做波特率發生器:
(1)i/o的引腳模式
gpio_mode
(p7_0,gpi_impedance)
;
此晶元:i/o除了p3.0和p3.1外,其他所有的i/o口在上電後預設是高阻輸入狀態,所以手冊裡要求使用者在使用i/o前必須要設定i/o的模式。
gpio:準雙向口
gpo_pp:推挽輸出
gpi_impedance:高阻輸入
gpi_od:開漏輸出
在開始解釋這四個概念前,可以先將它們分類,「準雙向口」是輸入與輸出,高阻輸入只輸入,另外兩個是輸出,相當於一共有三類。
準雙向口:首先要明白準雙向i/o口的意思,很多處理器的引腳可以設定為雙向埠,雙向埠的要求就是可輸入與輸出。
對於51微控制器而言,所以的i/o口直接就是準雙向i/o口,而反觀stm32核心的微控制器,它的i/o的模式是需要自己設定的,準雙向口是其中的一種,設定後就可以等效於51微控制器中的i/o了。
其實質用的是乙個弱上拉電阻,在輸入io的情況下,無法做到完全的只有輸入沒有輸出,才形成了既有輸入又有輸出的情況。
高阻輸入:從手冊上講,高阻輸入就是「電流既不能流入,也不能流出」,有點感覺像高阻態了
為什麼這樣做:是為了對於不用的i/o讓它不對用的產生干擾
推挽輸出:(專業解釋)推挽輸出的結構是由兩個三極體或者mos管受到互補訊號的控制,兩個管子始終保持乙個處於截止,另乙個處於導通的狀態。
好處:基本上可以真正做到輸出高低電平,且都有驅動力,而且這個驅動力強於開漏輸出。
缺點:多個使用時,如果要高電平與低電平混用的話,非常容易短路
開漏輸出:與推挽輸出想對應,但是無法實現真正的輸出高電平,低電平是可以的,在輸出高電平時會面臨驅動力不足的情況,所以需要借助外部的上拉電阻去實現真正的輸出高電平
好處:電平轉換容易,主要是那個上拉電阻在起作用,你放哪,哪就是高電平,以及,可實現「線與」
什麼叫線與:所謂的"線與"指的是多個訊號線直接連線在一起,只有當所有訊號全部為高電平時,合在一起的匯流排為高電平;只要有任意乙個或者多個訊號為低電平,則匯流排為低電平。
複習材料一:gpio引腳模式
複習材料二:gpio輸入輸出各種模式(推挽、開漏、準雙向埠)詳解
複習材料三:關於stm32微控制器準雙向io口配置
(2)為什麼要設定上拉電阻
gpio_pull_set
(p7_0,pullup)
;
因為有時候預設的電平情況是不清楚的,外部經過乙個上拉電阻再接vcc,那麼相應的引腳就為高電平,所以說是用於確定狀態的。
①上下拉電阻作用:
上拉電阻可以讓電平穩定在高電平,下拉電阻可以讓電平穩定在低電平 ,同時提高電路抗干擾性
②不用會怎樣:
應該是電路的驅動能力不足,微控制器無法準確執行使用者的要求
資料一:stm32設定內部上拉電阻_比較全面的電阻上、下拉介紹
資料二:上下拉電阻作用
(3)電機上的編碼器,通過編碼器調節電機轉速
資料一:stm32直流減速電機控制篇(一)pwm調速
資料二:stm32直流減速電機控制篇(二)編碼器測速原理
資料三:stm32直流減速電機控制篇(三)編碼器測速程式編寫
資料四:stm32與pc串列埠通訊 實現步進電機轉速可調 程式及除錯過程分享
(4)為什麼要用定時器進行初始化實現外部計數
編碼器採集資料要通過定時器作為外部計數;
測試STC8H8K64U AD轉換
簡 介 本文給出了基於stc8h8k stc8h8k ad,快速製版 2020年4月23日,拿到了剛剛出品的stc8h8k64u晶元,這款自己帶有8k記憶體,並且有usb介面的晶元,還有12bitadc,適應於更多的工業訊號採集和控制應用。下面對於其ad功能進行測試。設計測試電路板的原理圖如下。僅僅...
實物2操作 stc8a8k按鍵使用
3 程式 先定義引腳。然後進行程式設計。注意去抖動。程式設計的時候,可以給每個按鍵設定乙個變數作為旗幟,當安下去的時候,旗幟 1進行翻轉,後面可以查詢到哪乙個按鍵按下去。4 例程。4個按鍵,實現不同的led閃爍模式。include sbit key0 p3 4 sbit key1 p3 5 sbit...
STC8A4K系列微控制器EEPROM程式設計
這段時間在弄stc8a系列微控制器做乙個設計,遇到一些問題,第一次寫部落格,把遇到的問題寫下來分享一下。遇到的問題就是eeprom不能正確的讀取到儲存的資料。資料存入eeprom後,讀取出來的資料不正確。我看了微控制器文件但是並沒有提到這個點。下面就詳細的講一下這個點,希望有問題的小夥伴遇到問題可以...