中科藍訊藍芽 通用IO GPIO 一般操作

2021-10-01 20:03:32 字數 1378 閱讀 5720

目錄

1. gpio 常用暫存器:

2. 常見輸入輸出示例:

3. 關於gpioaset/gpioaclr:

如下(以gpioa為例子):

gpioafen: 設定為0表示作為通用io(gpio)使用   //設定為1表示做其它功能性io,如串列埠/spi..

gpioade: 數字io使能: 0為模擬io, 1 為數字io,    //如作為aux輸入的io口就需要設定成模擬io, 減少數字io對aux的干擾.

gpioadir: 控制io的方向:  0為輸入, 1為輸出.

gpioa : io方向為輸入時,讀此暫存器的值即得到引腳的高低狀態  //io為輸出時, 寫此暫存器的高低即設定對應引腳的高低輸出.

gpioadrv: 0 輸出驅動為8ma   //1 輸出驅動為32 ma   //io方向為輸出且是數字io時有效

//以下暫存器控制上拉或下拉, 注意只有當io設定為輸入時, 上下拉才有效.  //io方向為輸出時上下拉自動無效  

gpioapu          //10k上拉使能

gpioapd          //10k下拉使能

gpioapu200k      //200k上拉使能

gpioapd200k      //200k下拉使能

gpioapu300       //300歐上拉使能

gpioapd300       //300歐下拉使能

1) pa0輸出高低(點led燈)示例

//正常啟動main函式

int main(void)

2) 得到pa0引腳狀態(作用輸入)示例

int main(void)

優化輸出使用的特殊暫存器,它們只對寫入為1的位有效, 寫入為0的位是不影響它以前的狀態

gpioaset: 把設定為1的位置1. 設定為0的位不影響以前的狀態.

gpioaclr: 把設定為1的位置0. 設定為0的位不影響以前的狀態.

使用方法如: 

gpioaset = bit(0);    //pa0輸出高, 等效於 gpioa |= bit(0);

gpioaclr = bit(0);    //pa0輸出低, 等效於gpioa &= ~bit(0);   

優化原理: 如程式把io設定為高, 一般這樣寫gpioa |= bit(0);  

這裡實際上有三個步驟:   1) 先讀出gpioa.  2) 再把gpioa | bit(0);  3) 把或後的結果再寫回gpioa

而使用gpioaset等效優化後, 直一條指令gpioaset = bit(0);即達到 上面三步才能達到的效果.

中科藍訊AB536X系列晶元PWM使用說明

ab536x 支援 3 個定時器 timer3,timer4,timer5,pwm 輸出,每個定時器支援 3 路 pwm 輸出 分別是 pwm0 pwm1,pwm2,其中每個定時器支援 3 路週期相同,可設定不同占空比的 pwm 同時輸出。ab536x 每組 timer定時器 對應 pwm io 說...

中科藍訊AB5325A音箱回連慢解決方法

sdk版本 ab532x s9170 解決方法 未回連的狀態下,在程式中呼叫回連函式 程式處理 在1秒呼叫訊息中新增判斷,是否有回連資訊bt nor get link info null 和藍芽是否處於配對狀態 bt nor is connected 兩者都滿足則呼叫一次回連函式。直到回連上裝置。c...

中科藍訊AB532X 自定義按鍵處理函式的實現

有些時候客戶樣機上的按鍵不夠多,但又想單個按鍵可以操作多個功能,比如同乙個按鍵長按2s乙個功能,長按4s乙個功能等等。要實現這樣的操作就要求軟體能改變按鍵按下的時間,但是藍訊sdk的按鍵處理函式沒開放出來 而且調節預設的按鍵時間測試發現無效 所以,要做這個功能只能重新寫個按鍵處理函式了,不過,在這裡...