一起學CC3200系列教程之跑馬燈 庫

2021-06-29 05:25:16 字數 3690 閱讀 5788

qq1519256298     [email protected]

實現跑馬燈實驗需要對cc3200設定,分成4個步驟

1、 引腳對映成gpio模式,上拉下拉等

2、 使能gpio的時鐘

3、 配置gpio:輸入輸出,

4、 向gpio的埠寫入資料

cc3200共有64引腳,共32個gpio,分成4組,每組有8個,

所以cc3200的1個引腳有3中名稱,

一種是基於引腳的,編號從0-63

一種是是基於總的gpio,編號從0-31

一種是基於分組的gpio,編號a0 –a3(或者a b c d)加(0-7)

引腳64的對應關係  :  pin_64  ==   gpio9   == gpio a1_1

1、 設定引腳的對映,

庫函式示例 pinmodeset(pin_64, pin_mode_0);

pin_64就是引腳編號,這裡是引腳64

pin_mode_0就是對映的功能,這裡是gpio模式

設定引腳的電流強度、上拉、下拉、開漏等

pinconfigset(pin_64,pin_strength_2ma,pin_type_std);

pin_64就是引腳編號,這裡是引腳64

pin_strength_2ma:電流強度,2ma,記得cc3200的電流強度大部分都是2ma,好像只有幾根是4ma的,

pin_type_std:沒有上拉和下拉,沒有開漏

2、 使能gpio的時鐘

cc3200的gpio分成4組,每組都有自己的一根時鐘,所以配置時需要查閱datasheet,引腳是對應於哪乙個gpio,這個gpio又是哪一組。

庫函式示例:prcmperipheralclkenable(prcm_gpioa1,prcm_run_mode_clk);

prcm_gpioa1:gpioa2的時鐘線

prcm_run_mode_clk:當cc3200在執行狀態時,使能這個時鐘,cc3200好像有3種執行模式,執行,睡眠,深度睡眠,這裡是執行狀態

3、 設定gpio的輸出輸出

gpiodirmodeset(gpioa1_base,gpio_pin_1,gpio_dir_mode_out); gpioa1_base:gpioa1組的gpio

gpio_pin_1:gpio a1的第1個gpio

gpio_dir_mode_out:輸出模式

4、 向gpio的埠寫入資料

gpiopinwrite(gpioa1_base,gpio_pin_1,gpio_pin_1);

gpioa1_base:gpio a1組的gpio

引數的第1個gpio_pin_1:gpio a1的第1個gpio

引數的第2個gpio_pin_1:gpio a1_1輸出高電平,為什麼這裡也是gpio_pin_1,其實這裡我是取巧了,看一下這個函式的原型

gpiopinwrite(unsignedlong ulport, unsigned char ucpins, unsigned char ucval);

ucpins可以等於gpio_pin_1|gpio_pin_2,

ucval可以是任意值,這裡我用一段**表示

if(ucpins&gpio_pin_1) else {

gpio_pin_1輸出低

if(ucpins&gpio_pin_1 == 0) {

gpio_pin_1不受影響

其他的gpio依次類推

**//#defineblinky_mode 01

//#defineblinky_mode 02

#defineblinky_mode 03

voidmain(void) {

//初始化板子,我看了一下大概是中斷向量表的對映,和其他的一些東西,這裡我們不關心

boardinit();

//使能時鐘

prcmperipheralclkenable(prcm_gpioa1,prcm_run_mode_clk);

//設定成gpio模式

pinmodeset(pin_64, pin_mode_0);

//設定電流驅動能力2ma,普通

pinconfigset(pin_64,pin_strength_2ma,pin_type_std);

//設定成gpio模式

pinmodeset(pin_01, pin_mode_0);

//設定電流驅動能力2ma,普通

pinconfigset(pin_01,pin_strength_2ma,pin_type_std);

//設定成gpio模式

pinmodeset(pin_02, pin_mode_0);

//設定電流驅動能力2ma,普通

pinconfigset(pin_02,pin_strength_2ma,pin_type_std);

gpiodirmodeset(gpioa1_base,gpio_pin_1,gpio_dir_mode_out);

gpiodirmodeset(gpioa1_base,gpio_pin_2,gpio_dir_mode_out);

gpiodirmodeset(gpioa1_base,gpio_pin_3,gpio_dir_mode_out);

while(1) {

#ifblinky_mode == 01 //現象:跑馬燈

gpiopinwrite(gpioa1_base,gpio_pin_1,gpio_pin_1);

delay(0xfffff);

gpiopinwrite(gpioa1_base,gpio_pin_1,0);

delay(0xfffff);

gpiopinwrite(gpioa1_base,gpio_pin_2,gpio_pin_2);

delay(0xfffff);

gpiopinwrite(gpioa1_base,gpio_pin_2,0);

delay(0xfffff);

gpiopinwrite(gpioa1_base,gpio_pin_3,gpio_pin_3);

delay(0xfffff);

gpiopinwrite(gpioa1_base,gpio_pin_3,0);

delay(0xfffff);

#endif

#ifblinky_mode == 02  //現象全亮後全滅

gpiopinwrite(gpioa1_base,gpio_pin_1|gpio_pin_2|gpio_pin_3,gpio_pin_1|gpio_pin_2|gpio_pin_3);

delay(0xfffff);

gpiopinwrite(gpioa1_base,gpio_pin_1|gpio_pin_2|gpio_pin_3,0);

delay(0xfffff);

#endif

#ifblinky_mode == 03//現象2個亮乙個滅  後    2個滅1個亮

gpiopinwrite(gpioa1_base,gpio_pin_1|gpio_pin_2|gpio_pin_3,gpio_pin_1|gpio_pin_2&(~gpio_pin_3));

delay(0xfffff);

gpiopinwrite(gpioa1_base,gpio_pin_1|gpio_pin_2|gpio_pin_3,(~gpio_pin_1)&(~gpio_pin_2)|gpio_pin_3);

delay(0xfffff);

#endif

一起學CC3200之軟體延時

c檔案 asm sect text softdelayus n clink n thumbfunc softdelayus n thumb n global softdelayus n softdelayus n lsr r1,r1,3 n mul r0,r1 n sub r0,6 n nop n ...

CC3200系列教程之IIC主機 注意點

汗,本來是想寫iic教程的,結果發現iic好像沒有什麼要寫的東西,看看官方的例程,基本的iic也就出來,難道要我再造輪子?於是想寫一下注意點。一般iic都是用於感測器的通訊的,發現官方的板子自帶的溫度感測器是smbus通訊協議的,smbus是可以用iic通訊,但是有點小區別,具體的區別自己可以goo...

一起學DNS系列(一)基礎 概覽

本系列主要講述有關windows 下dns伺服器的相關知識點,由於dns和ad結合異常緊密,所以與ad相關的dns應用和知識將在ad專欄中講述。此為本系列的第一節。我想沒有什麼人在訪問的時候會直接輸入ip位址,取而代之的是輸入一串簡單,容易記憶的字元,有數字的,如www.163.com 也有純字母的...