STC8H8K64U學習(自用)

2021-10-20 10:44:04 字數 3605 閱讀 7962

智慧型車競賽用到的是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後,讀取出來的資料不正確。我看了微控制器文件但是並沒有提到這個點。下面就詳細的講一下這個點,希望有問題的小夥伴遇到問題可以...