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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

STM32F103实现点灯(固件库方式)

發(fā)布時(shí)間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32F103实现点灯(固件库方式) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考:stm32上實(shí)現(xiàn)點(diǎn)燈
作者:SKY丶丿平才
發(fā)布時(shí)間: 2021-03-20 16:51:06
網(wǎng)址:https://blog.csdn.net/weixin_48264057/article/details/115028724

目錄

  • 前言
  • 一、硬件設(shè)計(jì)
  • 二、軟件設(shè)計(jì)
    • 1.建立工程
    • 2.代碼編寫(xiě)
  • 三、實(shí)際驗(yàn)證
    • 1.燒寫(xiě)程序
    • 2.實(shí)際功能驗(yàn)證
  • 總結(jié)

前言

其實(shí)和寄存器點(diǎn)燈是一樣的,只不過(guò)庫(kù)函數(shù)將寄存器都封裝在結(jié)構(gòu)體里面了,我們只需調(diào)用這些結(jié)構(gòu)體就好了。

本篇博文將要介紹的是控制ALIENTEK (正點(diǎn)原子)探索者STM32F4 開(kāi)發(fā)板上的兩個(gè) LED 實(shí)現(xiàn)一個(gè)類(lèi)似跑馬燈的效果,該實(shí)驗(yàn)的關(guān)鍵在于如何控制 STM32F4 的 IO 口輸出。了解了 STM32F4 的 IO 口如何輸出的,就可以實(shí)現(xiàn)跑馬燈了。通過(guò)這一章的學(xué)習(xí),你將初步掌握 STM32F4 基本 IO 口的使用,而這是邁向 STM32F4 的第一步。

一、硬件設(shè)計(jì)

本次實(shí)驗(yàn)用到的硬件只有 LED(DS0 和 DS1)。其電路在 ALIENTEK 探索者 STM32F4 開(kāi)發(fā)板上默認(rèn)是已經(jīng)連接好了的。DS0 接 PF9,DS1 接 PF10。所以在硬件上不需要?jiǎng)尤魏螙|西。其連接原理圖如下圖:

二、軟件設(shè)計(jì)

下面展示的是代碼的編寫(xiě),具體結(jié)構(gòu)體里面的函數(shù)尋找過(guò)程,參照這篇博文:STM32F103五分鐘入門(mén)系列(一)跑馬燈(庫(kù)函數(shù)+寄存器)+加編程模板+GPIO總結(jié),在庫(kù)函數(shù)點(diǎn)燈部分有專(zhuān)門(mén)講解。

1.建立工程

這是江江的視頻教程:
在USER文件夾下創(chuàng)建LED文件夾,文件夾內(nèi)創(chuàng)建 led.c 和 led.h 文件,然后通過(guò) keil 將 led.c 添加到項(xiàng)目工程,編譯一下,led.h自動(dòng)包含進(jìn)來(lái)了。
led.h

led.c

main.c

在keil5中建立好如下圖所示的工程:

2.代碼編寫(xiě)

我們需要在三個(gè)文件中編寫(xiě)代碼,其他添加進(jìn)去的文件都是固件庫(kù)自帶得,這里我們使用調(diào)庫(kù)的方式來(lái)實(shí)現(xiàn)點(diǎn)燈。

首先是在led.c文件中,這是我們的點(diǎn)燈文件,主要是定義一個(gè)初始化函數(shù)

led.c

#include "led.h" void LED_Init(void){ GPIO_InitTypeDef GPIO_InitStructure;//結(jié)構(gòu)體定義要在時(shí)鐘之前 通過(guò)“.”訪問(wèn)結(jié)構(gòu)圖內(nèi)部成員變量//1、使能APB2的時(shí)鐘GPIC(視頻課程中)RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF時(shí)鐘//2、結(jié)構(gòu)體配置//GPIOF9,F10初始化設(shè)置 視頻課程中就配置了前三個(gè)結(jié)構(gòu)體成員變量 沒(méi)指定上拉GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//LED0和LED1對(duì)應(yīng)IO口GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通輸出模式GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz 點(diǎn)燈的話頻率隨便選一個(gè)就好了GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIOGPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);//GPIO電平拉高函數(shù) GPIOF9,F10設(shè)置高,燈滅}

隨后是led.h文件,這里要對(duì)定義的函數(shù)做聲明以及定義好兩個(gè)io口

led.h

#ifndef __LED_H #define __LED_H //這兩步驟 條件編譯#include "sys.h" //include "stm32f10x.h" 視頻課程中用的板子包含這個(gè)頭文件//LED端口定義 這兩個(gè)分別是GPIO電平拉低拉高函數(shù),視頻課程中沒(méi)有這一步。 #define GPIO_ResetBits(GPIOF,GPIO_Pin_9) #define GPOO_SetBits(GPIOF,GPIO_Pin_10) void LED_Init(void);//初始化 先聲明,然后在.C文件中實(shí)現(xiàn) #endif

最后再編寫(xiě)main.c文件

main.c

#include "sys.h" #include "delay.h" #include "usart.h" #include "led.h"int main(void){ delay_init(168); //初始化延時(shí)函數(shù)LED_Init(); //初始化LED端口/**下面是通過(guò)直接操作庫(kù)函數(shù)的方式實(shí)現(xiàn)IO控制**/ while(1){GPIO_ResetBits(GPIOF,GPIO_Pin_9); //LED0對(duì)應(yīng)引腳GPIOF.9拉低GPIO_SetBits(GPIOF,GPIO_Pin_10); //LED1對(duì)應(yīng)引腳GPIOF.10拉高delay_ms(500); //延時(shí)300msGPIO_SetBits(GPIOF,GPIO_Pin_9); //LED0對(duì)應(yīng)引腳GPIOF.0拉高GPIO_ResetBits(GPIOF,GPIO_Pin_10); //LED1對(duì)應(yīng)引腳GPIOF.10拉低delay_ms(500); //延時(shí)300ms}}

三、實(shí)際驗(yàn)證

1.燒寫(xiě)程序

在FlyMcu軟件中利用串口將編譯好的程序燒寫(xiě)進(jìn)去

2.實(shí)際功能驗(yàn)證


燒寫(xiě)進(jìn)板子的程序開(kāi)始運(yùn)行,實(shí)現(xiàn)了跑馬燈功能

總結(jié)

這個(gè)跑馬燈的實(shí)驗(yàn)主要是介紹了對(duì)于32IO口的使用,雖然內(nèi)容上比較簡(jiǎn)單,也是通過(guò)調(diào)庫(kù)的方式來(lái)實(shí)現(xiàn)的,但還是能給我們很多有用得啟發(fā)。

總結(jié)

以上是生活随笔為你收集整理的STM32F103实现点灯(固件库方式)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。