日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【STM32】LED初始化基础以及基本使用方法(CT117E电路)

發布時間:2024/3/26 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【STM32】LED初始化基础以及基本使用方法(CT117E电路) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

LED的使用

LED燈的初始化

LED燈的控制(寄存器or庫函數)

參考?


LED的使用

LED燈的初始化

void LED_INIT(void) {// 初始化結構體GPIO_InitTypeDef GPIO_InitStructure;// 使能我們的時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE);// LED配置引腳初始化參數GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10; // 0xff00GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;// LED初始化引腳GPIO_Init(GPIOC, &GPIO_InitStructure);// 鎖存器配置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;// 鎖存器初始化引腳GPIO_Init(GPIOD, &GPIO_InitStructure);// 將LED初始化為熄滅GPIOD->ODR |= (1<<2); // Pin_2GPIOC->ODR = 0XFF00;GPIOD->ODR &= ~(1<<2); // 0X0010 -> 0X1101 的轉變 }

stm32的每一個引腳都有時鐘控制,這樣在不用的時候可以關閉時鐘來達到節能的目的,所以,如果要使用外設,必須先打開時鐘,否則沒有辦法進行操作

既要利用RCC_APB2PeriphClockCmd函數使能對應的時鐘

以上代碼首先要定義GPIO初始化結構體,通過對CT117E原理圖的分析可以看到控制LED燈的鎖存器引腳"N_LE"與"H_D0"到"H_D7"分別涉及到了GPIOD和GPIOC,所以用以下代碼對兩個GPIO進行使能。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE);

選擇對應的引腳進行配置,比如從電路圖可以看到要配置LED1到LED3,則需要配置引腳8到9。

GPIO_InitStructure.GPIO_Pin= GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10

?

?GPIO 引腳速度: GPIO_Speed_2MHz ??? (10MHz, 50MHz) ;

又稱輸出驅動電路的響應速度:(芯片內部在I/O口的輸出部分安排了多個響應速度不同的輸出驅動電路,用戶可以根據自己的需要選擇合適的驅動電路,通過選擇速度來選擇不同的輸出驅動模塊,達到最佳的噪聲控制和降低功耗的目的。)

可理解為:?輸出驅動電路的帶寬:即一個驅動電路可以不失真地通過信號的最大頻率。(如果一個信號的頻率超過了驅動電路的響應速度,就有可能信號失真。失真因素?)如果信號頻率為10MHz,而你配置了2MHz的帶寬,則10MHz的方波很可能就變成了正弦波。就好比是公路的設計時速,汽車速度低于設計時速時,可以平穩地運行,如果超過設計時速就會顛簸,甚至翻車。

?這里一般設置最快的響應速度

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

關于模式這里可以了解推免輸出的模式:https://zhidao.baidu.com/question/1925251871090147787.html

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推免輸出模式

然后初始化GOPOC口的對應引腳,既對C口用初始化結構體來初始化

GPIO_Init(GPIOC, &GPIO_InitStructure);

?"N_LE"是LED燈的使能引腳,需要找對應的引腳進行單獨的初始化,其方式與上面相似,只需改變初始化結構體"GPIO_InitStructure"的參數并對其進行初始化即可

// 鎖存器配置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;// 鎖存器初始化引腳GPIO_Init(GPIOD, &GPIO_InitStructure);

LED燈的控制(寄存器or庫函數)

?注意初始化LED燈之后,需要對引腳GPIO_Pin8到15全部置0,就是說要先將所有的燈都關閉。

不僅是初始化對應GPIO口的引腳之后要置0,在每次使用LED燈之前也要先全部置0后再對LED燈進行使用

利用寄存器操作時,可以對結構體GPIO的ODR進行位操作,位操作的方式與各個方式的優缺點可以參考該博文:https://blog.csdn.net/byhunpo/article/details/88996657

//寄存器操作:GPIOD->ODR |= (1<<2); // Pin_2 在原來值的基礎之上與(0x...00100)進行或操作GPIOC->ODR = 0XFF00;GPIOD->ODR &= ~(1<<2); // 0X...00100 -> 0X...1101 的轉變 //庫函數操作:GPIO_SetBits(GPIOD,GPIO_Pin_2); //對應的GPIO口的對應引腳置高電平GPIO_SetBits(GPIOC,GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11\|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);GPIO_ResetBits(GPIOD,GPIO_Pin_2);//對應的GPIO口的對應引腳置低電平

使用或者說控制LED燈時,用上面相同方法(寄存器的方法或者庫函數的方法)對LED燈進行操作即可。

下面是LED所對應的引腳值:

#define LED1 ((uint16_t)0x0100) /*!< Pin 8 selected */ #define LED2 ((uint16_t)0x0200) /*!< Pin 9 selected */ #define LED3 ((uint16_t)0x0400) /*!< Pin 10 selected */ #define LED4 ((uint16_t)0x0800) /*!< Pin 11 selected */ #define LED5 ((uint16_t)0x1000) /*!< Pin 12 selected */ #define LED6 ((uint16_t)0x2000) /*!< Pin 13 selected */ #define LED7 ((uint16_t)0x4000) /*!< Pin 14 selected */ #define LED8 ((uint16_t)0x8000) /*!< Pin 15 selected */

下面是LED的控制函數:?

void LEDControl(u16 LEDx,u8 state) {if(state){GPIO_SetBits(GPIOD,GPIO_Pin_2);GPIO_ResetBits(GPIOC,LEDx);GPIO_ResetBits(GPIOD,GPIO_Pin_2);}else{GPIO_SetBits(GPIOD,GPIO_Pin_2);GPIO_SetBits(GPIOC,LEDx);GPIO_ResetBits(GPIOD,GPIO_Pin_2);} }

雖然這里的LEDx是16位的,但是進行位操作時可以用于對32位的值進行操作。

參考?

[1]?stm32引腳速度GPIO_Speed的區別(轉載)?http://blog.sina.com.cn/s/blog_965c4d800102whqu.html

[2]?stm32各種輸出的區別?https://blog.csdn.net/qqGHJ/article/details/88724032

總結

以上是生活随笔為你收集整理的【STM32】LED初始化基础以及基本使用方法(CT117E电路)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。