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 也有純字母的...