在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32F407 GPIO口輸出配置配置步驟

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-07-06 14:27 ? 次閱讀

STM32F407ZGT6 是意法半導體(STMicroelectronics)公司推出的一款高性能ARM Cortex-M4核心的32位微控制器MCU)。它是 STM32F4 系列的一員,具備強大的處理能力和豐富的外設功能,適用于各種應用領域。

【1】F407建工程所需依賴文件

img

img

img

img

img

img

【2】 新建工程

img

img

img

img

img

img

img

img

img

img

img

img

img

**說明:STM32F4 的主頻最高是 168Mhz,所以我們一般設置 PLLCLK 為 168Mhz(M=8,N=336,P=2),通過 SW 選擇 SYSCLK=PLLCLK即可得到 168Mhz 的系統運行頻率。**

【3】分析LED硬件原理圖

img

img

img

【4】編寫LED驅動代碼

查看數據手冊:

img

img

Led.c文件代碼如下:

#include "led.h"
 /*
 函數功能:LED初始化
 硬件連接:
 PF8-- >BEEP  --高電平響
 PF9-- >LED0  --低電平亮
 PF10- >LED1  --低電平亮
 */
 void LED_Init(void)
 {
 /*1. 開時鐘*/
   RCC- >AHB1ENR|=1< 5;//使能PORTF時鐘
 
   /*2. 配置GPIO口模式*/
   GPIOF- >MODER&=~(0x3< 8*2); //清除模式
 GPIOF- >MODER|=0x1< 8*2;    //配置輸出模式
 
 GPIOF- >MODER&=~(0x3< 9*2); //清除模式
 GPIOF- >MODER|=0x1< 9*2;    //配置輸出模式
 
 GPIOF- >MODER&=~(0x3< 10*2); //清除模式
 GPIOF- >MODER|=0x1< 10*2;    //配置輸出模式
 
   /*3. 配置GPIO口輸出類型*/
 GPIOF- >OTYPER&=~(0x1< 8);  //0表示推挽輸出
 GPIOF- >OTYPER&=~(0x1< 9);  //0表示推挽輸出
 GPIOF- >OTYPER&=~(0x1< 10); //0表示推挽輸出
 
 /*4. 配置GPIO口輸出速度*/
 GPIOF- >OSPEEDR&=~(0x3< 8*2); //清除之前配置
 GPIOF- >OSPEEDR|=0x2< 8*2;    //50MHZ輸出速度
 
 GPIOF- >OSPEEDR&=~(0x3< 9*2); //清除之前配置
 GPIOF- >OSPEEDR|=0x2< 9*2;    //50MHZ輸出速度
 
 GPIOF- >OSPEEDR&=~(0x3< 8*2); //清除之前配置
 GPIOF- >OSPEEDR|=0x2< 10*2;   //50MHZ輸出速度
 
 /*5. 配置GPIO口輸出默認電平*/
 GPIOF- >ODR|=1< 10;   //輸出1
 GPIOF- >ODR|=1< 9;   //輸出1
 GPIOF- >ODR&=~(1< 8);  //輸出0
 }
 ?
 ?
 ?

Led.h代碼如下

#ifndef _LED_H
 #define _LED_H
 #include "stm32f4xx.h"
 void LED_Init(void);
 #define LED0(x) if(x){GPIOF- >ODR|=1< ODR&=~(1< 
 #define LED1(x) if(x){GPIOF- >ODR|=1< ODR&=~(1< 
 #define BEEP(x) if(x){GPIOF- >ODR|=1< ODR&=~(1< 
 #endif
 ?

Main.c代碼如下

#include "stm32f4xx.h" // Device header
 #include "led.h"
 ?
 void DelayMs(u32 time)
 {
 u32 a,b,c;
 for(a=0;a< time;a++)
 for(b=0;b< 100;b++)
 for(c=0;c< 450;c++);
 }
 ?
 int main(void)
 {
 LED_Init();
 while(1)
 {
 LED0(0);
 LED1(0);
 //BEEP(0);
 DelayMs(1000);
 LED0(1);
 LED1(1);
 //BEEP(1);
 DelayMs(1000);
 }
 }
 ?

【5】編譯代碼 配置下載

img

img

img

【6】編寫無源蜂鳴器驅動代碼

Delay.c延時函數代碼

#include "delay.h"
 /*
 功能  :毫秒級別的延時函數
 參數  :填入延時的時間
 返回值:無
 說  明:頻率在168MHZ情況下使用
 */
 void DelayMs(u32 time)
 {
 u32 a,b,c;
 for(a=0;a< time;a++)
 for(b=0;b< 100;b++)
 for(c=0;c< 450;c++);
 }
 ?
 ?
 /*
 功能  :微秒級別的延時函數
 參數  :填入延時的時間
 返回值:無
 說  明:頻率在168MHZ情況下使用
 */
 void DelayUs(u32 time)
 {
 u32 k;
 while(time--)
 {
 k=40;
 while(k--);
 }
 }
 ?
 ?

Led.c代碼

#include "led.h"
 /*
 函數功能:LED初始化
 硬件連接:
 PF8-- >BEEP  --高電平響
 PF9-- >LED0  --低電平亮
 PF10- >LED1  --低電平亮
 */
 void LED_Init(void)
 {
 /*1. 開時鐘*/
   RCC- >AHB1ENR|=1< 5;//使能PORTF時鐘
 
   /*2. 配置GPIO口模式*/
   GPIOF- >MODER&=~(0x3< 8*2); //清除模式
 GPIOF- >MODER|=0x1< 8*2;    //配置輸出模式
 
 GPIOF- >MODER&=~(0x3< 9*2); //清除模式
 GPIOF- >MODER|=0x1< 9*2;    //配置輸出模式
 
 GPIOF- >MODER&=~(0x3< 10*2); //清除模式
 GPIOF- >MODER|=0x1< 10*2;    //配置輸出模式
 
   /*3. 配置GPIO口輸出類型*/
 GPIOF- >OTYPER&=~(0x1< 8);  //0表示推挽輸出
 GPIOF- >OTYPER&=~(0x1< 9);  //0表示推挽輸出
 GPIOF- >OTYPER&=~(0x1< 10); //0表示推挽輸出
 
 /*4. 配置GPIO口輸出速度*/
 GPIOF- >OSPEEDR&=~(0x3< 8*2); //清除之前配置
 GPIOF- >OSPEEDR|=0x2< 8*2;    //50MHZ輸出速度
 
 GPIOF- >OSPEEDR&=~(0x3< 9*2); //清除之前配置
 GPIOF- >OSPEEDR|=0x2< 9*2;    //50MHZ輸出速度
 
 GPIOF- >OSPEEDR&=~(0x3< 8*2); //清除之前配置
 GPIOF- >OSPEEDR|=0x2< 10*2;   //50MHZ輸出速度
 
 /*5. 配置GPIO口輸出默認電平*/
 GPIOF- >ODR|=1< 10;   //輸出1
 GPIOF- >ODR|=1< 9;   //輸出1
 GPIOF- >ODR&=~(1< 8);  //輸出0
 }
 ?
 /*
 1/2000HZ=0.0005s=0.5ms=500us
 1/4000HZ=0.25ms
 控制蜂鳴器:產生2KHZ~5KHZ的方波即可
 */
 void BEEP_Ctlrl(u8 cmd,u32 time)
 {
 u8 i;
 if(cmd) //打開蜂鳴器
 {
 for(i=0;i< time;i++)
 {
 BEEP(0);
 DelayUs(250);
 BEEP(1);
 DelayUs(250);
 }
 }
 else   //關閉蜂鳴器
 {
 BEEP(0);
 for(i=0;i< time;i++)DelayUs(250);
 }
 }
 ?

Mian.c主函數代碼

#include "stm32f4xx.h" // Device header
 #include "led.h"
 #include "delay.h"
 ?
 int main(void)
 {
 u8 i;
 LED_Init();
 while(1)
 {
  i=!i;
  BEEP_Ctlrl(i,200);
 }
 }
 ?

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7572

    瀏覽量

    151648
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17185

    瀏覽量

    351735
  • 意法半導體
    +關注

    關注

    31

    文章

    3144

    瀏覽量

    108740
  • GPIO
    +關注

    關注

    16

    文章

    1213

    瀏覽量

    52184
  • STM32F407
    +關注

    關注

    15

    文章

    188

    瀏覽量

    29533
收藏 人收藏

    評論

    相關推薦

    STM32F407 GPIO輸入配置配置步驟

    介紹STM32F407新建寄存器工程流程,介紹輸入模式的配置方式,以按鍵為例完成按鍵輸入檢測。
    的頭像 發表于 07-06 14:28 ?2370次閱讀
    <b class='flag-5'>STM32F407</b> <b class='flag-5'>GPIO</b><b class='flag-5'>口</b>輸入<b class='flag-5'>配置</b><b class='flag-5'>配置</b><b class='flag-5'>步驟</b>

    STM32F407 串口配置步驟

    介紹STM32F407配置步驟,完成串口的數據發送與接收、實現中斷接收,支持printf重定向。
    的頭像 發表于 07-06 14:29 ?3235次閱讀
    <b class='flag-5'>STM32F407</b> 串口<b class='flag-5'>配置</b><b class='flag-5'>步驟</b>

    STM32F407 位帶配置步驟

    介紹STM32F407位帶操作方法,設置寄存器的偏移量,實現按GPIO指定位進行讀寫操作,方便編程。
    的頭像 發表于 07-06 14:30 ?1271次閱讀
    <b class='flag-5'>STM32F407</b> 位帶<b class='flag-5'>配置</b><b class='flag-5'>步驟</b>

    STM32F407 外部中斷配置步驟

    介紹STM32F407外部中斷配置步驟,以按鍵為例,實現外部中斷配置,使用按鍵觸發中斷進行LED燈控制。
    的頭像 發表于 07-06 14:31 ?2020次閱讀
    <b class='flag-5'>STM32F407</b> 外部中斷<b class='flag-5'>配置</b><b class='flag-5'>步驟</b>

    STM32F407 基本定時器配置輸出PWM方波

    介紹STM32F407定時器PWM波形輸出配置方式。 通過邏輯分析采集波形數據進行可視化顯示對比。
    的頭像 發表于 07-06 14:33 ?5302次閱讀
    <b class='flag-5'>STM32F407</b> 基本定時器<b class='flag-5'>配置</b><b class='flag-5'>輸出</b>PWM方波

    stm32f407輸出pwm波的配置步驟有哪些

    什么是脈沖寬度調制?stm32f407輸出pwm波的配置步驟有哪些?
    發表于 10-25 07:15

    STM32F407的DAM輸出配置有哪些步驟

    STM32F407的DAM輸出配置有哪些步驟呢?怎樣去實現其代碼呢?
    發表于 01-25 07:22

    stm32f407通信的代碼

    stm32f407通信的代碼 原理圖還有封裝 很清楚自己畫的
    發表于 03-21 17:22 ?0次下載

    STM32CubeMX 配置STM32F407 實現HAL庫延時微妙方案

    STM32CubeMX 配置STM32F407 實現HAL庫延時微妙方案
    發表于 11-24 20:51 ?20次下載
    <b class='flag-5'>STM32</b>CubeMX <b class='flag-5'>配置</b><b class='flag-5'>STM32F407</b> 實現HAL庫延時微妙方案

    [STM32]STM32F407系列教程之二,gpio輸入輸出實驗

    [STM32]STM32F407系列教程之二,gpio輸入輸出實驗
    發表于 11-29 14:06 ?19次下載
    [<b class='flag-5'>STM32</b>]<b class='flag-5'>STM32F407</b>系列教程之二,<b class='flag-5'>gpio</b>輸入<b class='flag-5'>輸出</b>實驗

    STM32F407的串口UART 基礎配置STM32CubeMX

    STM32F407的串口UART 基礎配置STM32CubeMX
    發表于 11-29 16:06 ?56次下載
    <b class='flag-5'>STM32F407</b>的串口UART 基礎<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX

    stm32f407引腳相關配置

    stm32f407的IO可由軟件配置成8種模式:輸入浮空、輸入上拉、輸入下拉、模擬輸入、開漏輸出、推挽輸出、推挽式復用功能、開漏式復用功能
    發表于 12-02 15:51 ?15次下載
    <b class='flag-5'>stm32f407</b>引腳相關<b class='flag-5'>配置</b>

    STM32F407開發板用戶手冊】第21章 STM32F407的NVIC中斷分組和配置(重要)

    STM32F407開發板用戶手冊】第21章 STM32F407的NVIC中斷分組和配置(重要)
    發表于 12-04 13:51 ?21次下載
    【<b class='flag-5'>STM32F407</b>開發板用戶手冊】第21章 <b class='flag-5'>STM32F407</b>的NVIC中斷分組和<b class='flag-5'>配置</b>(重要)

    STM32F407開發板用戶手冊】第19章 STM32F407GPIO應用之按鍵FIFO

    STM32F407開發板用戶手冊】第19章 STM32F407GPIO應用之按鍵FIFO
    發表于 12-05 15:21 ?39次下載
    【<b class='flag-5'>STM32F407</b>開發板用戶手冊】第19章 <b class='flag-5'>STM32F407</b>的<b class='flag-5'>GPIO</b>應用之按鍵FIFO

    STM32F407的USB_HID 基礎配置STM32CubeMX

    STM32F407的USB_HID 配置示例詳解: (參考 : https://blog.csdn.net/zhanglifu3601881/article/details/89675307)工具
    發表于 12-28 19:59 ?20次下載
    <b class='flag-5'>STM32F407</b>的USB_HID 基礎<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX
    主站蜘蛛池模板: 国产成人悠悠影院| 天天久久影视色香综合网| 国产资源在线观看| 免费能直接在线观看黄的视频| 欧美日韩一区二区三区视频| 亚洲成在线| 午夜情趣视频| 黄网站视频观看免费| 5g影院天天爽 | 欧美一区二区高清| 看全色黄大色大片免费久久怂| 四虎免费在线播放| 日本特黄特色| 四虎国产在线| 欧美性受一区二区三区| 黑人破乌克兰美女处| bt 另类 专区 欧美 制服| 日本黄色生活片| 久久久久久久蜜桃| 成人做视频免费| 国产三级免费观看| 夭天干天天做天天免费看| 手机看片久久青草福利盒子| 国产chinesehd精品酒店| 91精品国产亚洲爽啪在线影院| 美女扒开内裤让男人桶| 午夜精品福利在线观看| 色www国产阿娇| 国产黄色视屏| 99久久精品免费看国产免费| 午夜激情啪啪| 噜噜噜噜噜噜色| bt天堂在线www种子搜索| 欧美色老太婆| 夜夜操夜夜摸| 久久久精品免费热线观看| 91拍拍在线观看| 五月情视频在线观看| 毛片美女| 二级黄绝大片中国免费视频0| 午夜毛片免费看|