国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

新建led文件夾和bsp_led.c和bsp_led.h的板級(jí)支持包。


在bsp_led.c中,函數(shù)LED_GPIO_Config(void)提供了gpio的初始化過(guò)程:


定義GPIO初始化結(jié)構(gòu)體;

開(kāi)啟RCC時(shí)鐘,這一步非常重要,要找到對(duì)應(yīng)的總線和外設(shè)時(shí)鐘;

給初始化結(jié)構(gòu)體成員賦值,由于和硬件相關(guān),都在bsp_led.h中定義成宏,提高可移植性。

bsp_led.c


// bsp: board support package 板級(jí)支持包

 

#include "bsp_led.h"

 

void LED_GPIO_Config(void)

{

    // 定義GPIO初始化結(jié)構(gòu)體

GPIO_InitTypeDef GPIO_InitStruct;

// 開(kāi)啟RCC時(shí)鐘,非常關(guān)鍵

RCC_APB2PeriphClockCmd(LED_R_GPIO_CLK | LED_G_GPIO_CLK | LED_B_GPIO_CLK, ENABLE);

 

    // 配置初始化結(jié)構(gòu)體,傳入具體參數(shù)

GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN;

    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;

// 初始化3個(gè)LED燈的GPIO

GPIO_Init(LED_G_GPIO_PORT, &GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin = LED_R_GPIO_PIN;

GPIO_Init(LED_R_GPIO_PORT, &GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin = LED_B_GPIO_PIN;

GPIO_Init(LED_B_GPIO_PORT, &GPIO_InitStruct);

// 初始狀態(tài)關(guān)閉所有LED燈

GPIO_SetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);

GPIO_SetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);

GPIO_SetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);

}

 

 

在bsp_led.h中,大量使用了宏定義,來(lái)封裝硬件相關(guān)的函數(shù)


bsp_led.h


#ifndef __BSP_LED_H

#define __BSP_LED_H

 

#include "stm32f10x.h"

 

// 硬件封裝宏

#define LED_R_GPIO_PIN GPIO_Pin_5

#define LED_R_GPIO_PORT GPIOB

#define LED_R_GPIO_CLK RCC_APB2Periph_GPIOB

 

#define LED_G_GPIO_PIN GPIO_Pin_0

#define LED_G_GPIO_PORT GPIOB

#define LED_G_GPIO_CLK RCC_APB2Periph_GPIOB

 

#define LED_B_GPIO_PIN GPIO_Pin_1

#define LED_B_GPIO_PORT GPIOB

#define LED_B_GPIO_CLK RCC_APB2Periph_GPIOB

 

// 直接操作寄存器的方法控制IO

#define digitalHi(port, pin) do {port->BSRR |= pin;} while (0) // 置位

#define digitalLo(port, pin) do {port->BRR |= pin;} while (0) // 復(fù)位

#define digitalToggle(port, pin) do {port->ODR ^= pin;} while (0) // 反轉(zhuǎn)

 

// 定義控制IO的宏

#define LED_R_TOGGLE digitalToggle(LED_R_GPIO_PORT, LED_R_GPIO_PIN)

#define LED_R_ON digitalLo(LED_R_GPIO_PORT, LED_R_GPIO_PIN)

#define LED_R_OFF digitalHi(LED_R_GPIO_PORT, LED_R_GPIO_PIN)

 

#define LED_G_TOGGLE digitalToggle(LED_G_GPIO_PORT, LED_G_GPIO_PIN)

#define LED_G_ON digitalLo(LED_G_GPIO_PORT, LED_G_GPIO_PIN)

#define LED_G_OFF digitalHi(LED_G_GPIO_PORT, LED_G_GPIO_PIN)

 

#define LED_B_TOGGLE digitalToggle(LED_B_GPIO_PORT, LED_B_GPIO_PIN)

#define LED_B_ON digitalLo(LED_B_GPIO_PORT, LED_B_GPIO_PIN)

#define LED_B_OFF digitalHi(LED_B_GPIO_PORT, LED_B_GPIO_PIN)

 

// 顏色設(shè)置

#define LED_RED do {LED_R_ON; LED_G_OFF; LED_B_OFF;} while (0)

#define LED_GREEN do {LED_R_OFF; LED_G_ON; LED_B_OFF;} while (0)

#define LED_BLUE do {LED_R_OFF; LED_G_OFF; LED_B_ON;} while (0)

#define LED_YELLOW do {LED_R_ON; LED_G_ON; LED_B_OFF;} while (0)

#define LED_PURPLE do {LED_R_ON; LED_G_OFF; LED_B_ON;} while (0)

#define LED_CYAN do {LED_R_OFF; LED_G_ON; LED_B_ON;} while (0)

 

#define LED_ALL_ON do {LED_R_ON; LED_G_ON; LED_B_ON;} while (0)

#define LED_ALL_OFF do {LED_R_OFF; LED_G_OFF; LED_B_OFF;} while (0)

 

void LED_GPIO_Config(void);

 

#endif /* __BSP_LED_H */

然后在主函數(shù)中進(jìn)行調(diào)用


main.c


#include "stm32f10x.h"

#include "bsp_led.h"

 

void delay(uint32_t count);

 

int main(void)

{

LED_GPIO_Config();

 

while (1)

{

LED_CYAN;

delay(0XFFFFF);

LED_ALL_OFF;

delay(0XFFFFF);

}

}

 

void delay(uint32_t count)

{

for (; count != 0; count--);

}

 

GPIO具有鎖定機(jī)制,可以凍結(jié)該GPIO的配置,即在下次復(fù)位前,不能更改GPIO的配置。

鎖定操作的寄存器為GPIOx_LCKR,具體描述如下

上面的說(shuō)明起始我感覺(jué)挺難理解的,于是找到了標(biāo)準(zhǔn)庫(kù)里面的源碼,發(fā)現(xiàn)寫(xiě)的非常清晰,具體如下


void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

{

  uint32_t tmp = 0x00010000;

  

  /* Check the parameters */

  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  assert_param(IS_GPIO_PIN(GPIO_Pin));

  

  tmp |= GPIO_Pin;

  /* Set LCKK bit */

  GPIOx->LCKR = tmp;

  /* Reset LCKK bit */

  GPIOx->LCKR =  GPIO_Pin;

  /* Set LCKK bit */

  GPIOx->LCKR = tmp;

  /* Read LCKK bit*/

  tmp = GPIOx->LCKR;

  /* Read LCKK bit*/

  tmp = GPIOx->LCKR;

}

tmp為L(zhǎng)CCK位置1,然后把GPIO_Pin的相應(yīng)值也置1。接下來(lái)就是對(duì)相應(yīng)的位執(zhí)行寫(xiě)入序列操作。


首先是寫(xiě)1,即寫(xiě)入帶LCCK和GPIO_Pin的位;


然后寫(xiě)0,寫(xiě)只帶GPIO_Pin的位;


然后重復(fù)寫(xiě)1;


接下來(lái)讀GPIOx_LCKR的值到tmp,連續(xù)讀取兩次,完成操作。

關(guān)鍵字:stm32  GPIO輸出  點(diǎn)亮LED 引用地址:stm32專題一:GPIO輸出—點(diǎn)亮LED

上一篇:stm32專題九:SysTick(一)系統(tǒng)嘀嗒定時(shí)器原理
下一篇:stm32專題十三:DMA(三)存儲(chǔ)器到外設(shè)

推薦閱讀

在過(guò)去的幾年,AWE不僅發(fā)展迅速,躋身全球三大展會(huì)行列,也在不斷推動(dòng)傳統(tǒng)家電與新興領(lǐng)域的跨界融合,堅(jiān)持以創(chuàng)造“用戶價(jià)值”為目標(biāo),促進(jìn)資本、科技、產(chǎn)業(yè)、渠道和消費(fèi)等領(lǐng)域之間全方位多層次的交流。十幾年來(lái),為家電及消費(fèi)電子全產(chǎn)業(yè)鏈上下游、消費(fèi)者、媒體及投資者搭建了共同交流的舞臺(tái),無(wú)論是家電、消費(fèi)電子、智能家居,還是物聯(lián)網(wǎng)、人工智能甚至移...
一份財(cái)報(bào)讓蔚來(lái)積攢了許久的矛盾一夜間全部爆發(fā)。 9 月 24 日,蔚來(lái)汽車(NIO)披露了 2019 年第二季度財(cái)報(bào),凈虧損高達(dá) 32.85 億元,比市場(chǎng)預(yù)期的還要糟糕。 凈虧 32.85 億元是什么概念呢? 蔚來(lái)汽車第二季度總交付量為 3553 輛。也就是說(shuō),平均每賣出一輛車,蔚來(lái)就會(huì)虧 92.5 萬(wàn)元。 對(duì)于這樣一份糟糕的成績(jī)單,蔚來(lái)卻沒(méi)有絲毫要解釋的意思...
中國(guó)儲(chǔ)能網(wǎng)訊:據(jù)外媒報(bào)道,行業(yè)領(lǐng)先的儲(chǔ)能開(kāi)發(fā)和集成商Fluence公司日前宣布收購(gòu)了電網(wǎng)軟件初創(chuàng)企業(yè)AMS公司。 AMS公司最初在南加州開(kāi)發(fā)電池儲(chǔ)能系統(tǒng),后來(lái)主要是致力于開(kāi)發(fā)電力市場(chǎng)交易算法工具。該公司在獲得加州一個(gè)關(guān)鍵的公用事業(yè)公司合同之后,作為一家風(fēng)險(xiǎn)投資公司,在管理基礎(chǔ)設(shè)施建設(shè)的資金受到限制,于是該公司在2017年將其業(yè)務(wù)轉(zhuǎn)變?yōu)殚_(kāi)發(fā)電力...
隨著內(nèi)燃機(jī)被電動(dòng)車取代,機(jī)械系統(tǒng)傳感器將被眾多的電子傳感器取代,以實(shí)現(xiàn)高效的操作和不同程度的自動(dòng)駕駛。其中一些新的傳感器將單獨(dú)運(yùn)行,但許多重要的傳感器需要與其他傳感器融合,以使其價(jià)值最大化。 目前還不清楚的是,這種傳感器的融合將在什么位置發(fā)生,或者究竟如何對(duì)數(shù)據(jù)進(jìn)行組合、分類和優(yōu)先處理。 Flex Logix的IP銷售和營(yíng)銷副總裁Andy Jaros...

史海拾趣

問(wèn)答坊 | AI 解惑

通信接口實(shí)驗(yàn)

串口通信應(yīng)用實(shí)驗(yàn) IIC 總線應(yīng)用實(shí)驗(yàn) USB device 實(shí)驗(yàn) IIS音頻接口實(shí)驗(yàn). …

查看全部問(wèn)答∨

有關(guān)電烙鐵的保養(yǎng)問(wèn)題

本帖最后由 paulhyde 于 2014-9-15 09:35 編輯 請(qǐng)教各位: 電烙鐵使用一段時(shí)間之后,電烙鐵頭的溫度就達(dá)不到要求的溫度. 請(qǐng)問(wèn)這是什么原因?那應(yīng)該如何保養(yǎng)呢?  …

查看全部問(wèn)答∨

wince6.0 流驅(qū)動(dòng)無(wú)法加載,getLastError = 55,怎么辦?

問(wèn)題如下:    我是接手別人的活,流驅(qū)動(dòng)開(kāi)發(fā)人員已走,據(jù)他說(shuō)驅(qū)動(dòng)是可以用的,流驅(qū)動(dòng)是在wince4.2下編譯成的dll。 我現(xiàn)在用wince6.0 、C#開(kāi)發(fā)。修改bib、reg文件,編譯內(nèi)核,用veiwbin查看,我需要的dll已包含在nk.bin內(nèi)。 但我測(cè)試 ...…

查看全部問(wèn)答∨

串口通信相關(guān)

請(qǐng)高手指點(diǎn),在此謝過(guò)。。 有三個(gè)問(wèn)題: 一,現(xiàn)在RS232串口通常使用9幀連接線,最簡(jiǎn)化的連接是3根連接線的方式,即地線連接(引腳5到引腳5的連接),TxD到RxD(引腳3到引腳2的連接),RxD到TxD(引腳2到引腳3的連接)。 這樣一來(lái),沒(méi)有RTS,C ...…

查看全部問(wèn)答∨

wince5.0升級(jí)到6.0 顯示驅(qū)動(dòng)移植的問(wèn)題

添加Display驅(qū)動(dòng),修改后編譯沒(méi)有錯(cuò),最后也可以生成鏡像,但是下到板子里去后沒(méi)有顯示,我做的移植是最小內(nèi)核,加過(guò)一個(gè)測(cè)試進(jìn)程,內(nèi)核可以跑起來(lái),看過(guò)一個(gè)高人{(lán)wogoyixikexie@gliet(注意轉(zhuǎn)載請(qǐng)標(biāo)明原創(chuàng)作者)}的移植筆記,在此引用下: 但是打 ...…

查看全部問(wèn)答∨

VxWorks中的VxWorks接口和POSIX接口

剛剛開(kāi)始學(xué)習(xí)VxWorks,看文檔的時(shí)候有個(gè)問(wèn)題一直有些迷惑。 文檔上面說(shuō)VxWorks既定義了VxWorks接口,你也可以使用VxWorks的POSIX擴(kuò)展。 (You can also use POSIX real-time extensions with VxWorks.) 我搞不太懂,這是什么意思?比如說(shuō)我要新 ...…

查看全部問(wèn)答∨

仿真波形問(wèn)題

  各位樓主,大家好!我在用modelsim-altera仿真時(shí),出現(xiàn)過(guò)好多警告,警告內(nèi)容為:Warning: CONV_INTEGER: There is an \'U\'|\'X\'|\'W\'|\'Z\'|\'-\' in an arithmetic operand, and it has been converted to 0.#  & ...…

查看全部問(wèn)答∨

關(guān)于頭文件的定義和引用

在下純屬為了實(shí)驗(yàn)演示: 我建了一個(gè)project,里面包含兩個(gè)c文建(fun.c和main.c)。這兩個(gè)c文件都都需要引用自定義的頭文件disp_tab.h里的數(shù)組元素。頭文件disp_tab.h只是一個(gè)液晶的顯示段碼的數(shù)組的定義:const unsigned char disp_tab[]={.....} ...…

查看全部問(wèn)答∨

請(qǐng)高手給個(gè)5v充電器的檢測(cè)電路

本帖最后由 paulhyde 于 2014-9-15 09:17 編輯 已經(jīng)有了5V的充電電壓,希望高手能給一個(gè)解決方案設(shè)計(jì)個(gè)充電電路,簡(jiǎn)單點(diǎn)的。 急用。。。。。  …

查看全部問(wèn)答∨

【M4開(kāi)發(fā)板Hanker試用狂】ddllxxrr之六:OTG 鼠標(biāo)

調(diào)通了USB OTG鼠標(biāo)。實(shí)現(xiàn)了,沒(méi)有細(xì)化屏幕我沒(méi)涉及。因?yàn)橼s進(jìn)度。我這個(gè)程序把開(kāi)發(fā)板的方向鍵做為鼠標(biāo),當(dāng)開(kāi)發(fā)板插到電腦上時(shí),在設(shè)備管理器里會(huì)出現(xiàn)人體設(shè)備。表示枚舉成功。見(jiàn)下圖:   可以上下左右移動(dòng)電腦中的鼠標(biāo)。為了方便向左鍵是 ...…

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved