gpio.h
1 #ifndef __GPIO_H__
2 #define __GPIO_H__
3
4
5 #define RCC_MP_AHB4ENSETR (*(volatile unsigned int*)0x50000A28)//volatile 修飾
6 #define GPIOE ((gpio_config_t*)0x50006000)//做成指針?lè)奖愫瘮?shù)傳遞參數(shù)
7 #define GPIOF ((gpio_config_t*)0x50007000)
8
9 #define GPIO_PIN_0 0
10 #define GPIO_PIN_1 1
11 #define GPIO_PIN_2 2
12 #define GPIO_PIN_3 3
13 #define GPIO_PIN_4 4
14 #define GPIO_PIN_5 5
15 #define GPIO_PIN_6 6
16 #define GPIO_PIN_7 7
17 #define GPIO_PIN_8 8
18 #define GPIO_PIN_9 9
19 #define GPIO_PIN_10 10
20 #define GPIO_PIN_11 11
21 #define GPIO_PIN_12 12
22 #define GPIO_PIN_13 13
23 #define GPIO_PIN_14 14
24 #define GPIO_PIN_15 15
25
26 typedef struct //方便給具體的gpio寄存器修改數(shù)值,首先有
27 //一個(gè)一組寄存器的首地址,把地址的轉(zhuǎn)成該形式后,解引用訪問(wèn)成員就是訪問(wèn)對(duì)應(yīng)寄存器
28 {
29 volatile unsigned int moder;//volatile 修飾
30 volatile unsigned int otyper;
31 volatile unsigned int ospeedr;
32 volatile unsigned int pupdr;
33 volatile unsigned int idr;
34 volatile unsigned int odr;
35 }gpio_config_t;
36
37 //下面封裝枚舉方便函數(shù)傳參時(shí)理解參數(shù)
38 typedef enum
39 {
40 GPIO_INPUT = 0,
41 GPIO_OUTPUT,
42 GPIO_AF,
43 GPIO_ANALOG,
44 }gpio_mode;
45
46 typedef enum
47 {
48 GPIO_PP = 0,
49 GPIO_OD,
50 }gpio_output_type;
51
52 typedef enum
53 {
54 GPIO_LOW = 0,
55 GPIO_MEDIUM,
56 GPIO_HIGH,
57 GPIO_VERY_HIGH,
58 }gpio_output_speed;
59
60 typedef enum
61 {
62 GPIO_NO_PULL = 0,
63 GPIO_PULL_UP,
64 GPIO_PULL_DOWN,
65 }gpio_pupd;
66
67 typedef enum
68 {
69 GPIO_RESET = 0,
70 GPIO_SET,
71 }gpio_state;
72
73 typedef struct
74 {
75 gpio_mode mode;
76 gpio_output_type type;
77 gpio_output_speed speed;
78 gpio_pupd pupd;
79 }gpio_init;
80 //1.需要初始化哪一組的GPIO端口,
81 //2.具體哪一個(gè)引腳
82 //3.傳一些引腳要設(shè)置成的模式速度等等,可以封裝成結(jié)構(gòu)體,并傳指針
83 void hal_gpio_init(gpio_config_t *GPIOx , unsigned int pin , gpio_init *init);
84
85 //1.需要寫(xiě)入哪一組的GPIO端口
86 //2.具體哪一個(gè)引腳
87 //3.需要寫(xiě)入的是什么數(shù)據(jù)
88 void hal_gpio_write(gpio_config_t *GPIOx , unsigned int pin , gpio_state state);
89 #endif
90
gpio.c?
1 #include "../include/gpio.h"
2
3
4 //1.需要初始化哪一組的GPIO端口,
5 //2.具體哪一個(gè)引腳
6 //3.傳一些引腳要設(shè)置成的模式速度等等,可以封裝成結(jié)構(gòu)體,并傳指針
7 void hal_gpio_init(gpio_config_t *GPIOx , unsigned int pin , gpio_init *init)
8 {
9 GPIOx->moder &= ~(0x3<<(pin*2));
10 GPIOx->moder |= (init->mode<<(pin*2));
11
12 GPIOx->otyper &= ~(0x1<otyper |= (init->type<ospeedr &= ~(0x3<<(pin*2));
16 GPIOx->ospeedr |= (init->speed<<(pin*2));
17
18 GPIOx->pupdr &= ~(0x3<<(pin*2));
19 GPIOx->pupdr |= (init->pupd<<(pin*2));
20 return;
21 }
22
23 //1.需要寫(xiě)入哪一組的GPIO端口
24 //2.具體哪一個(gè)引腳
25 //3.需要寫(xiě)入的是什么數(shù)據(jù)
26 void hal_gpio_write(gpio_config_t *GPIOx , unsigned int pin , gpio_state state)
27 {
28 if(state)
29 {
30 GPIOx->odr |= (0x1<odr &= ~(0x1<
main.c
| 1 #include "./include/gpio.h"
| 2
| 3 extern void printf(const char *fmt, ...);
| 4 void delay_ms(int ms)
| 5 {
| 6 int i,j;
| 7 for(i = 0; i< ms;i++)
| 8 for (j = 0; j< 1800; j++);
| 9 }
| 10
| 11 void led_init()
| 12 {
| 13 //GPIOE\F RCC enable
| 14 RCC_MP_AHB4ENSETR |= (0X3<<4);
| 15 gpio_init init = {
| 16 .mode = GPIO_OUTPUT,
| 17 .type = GPIO_PP,
| 18 .speed = GPIO_LOW,
| 19 .pupd = GPIO_NO_PULL,
| 20 };
| 21
| 22 hal_gpio_init(GPIOE , GPIO_PIN_10 , &init);
| 23 hal_gpio_init(GPIOE , GPIO_PIN_8 , &init);
| 24 hal_gpio_init(GPIOF , GPIO_PIN_10 , &init);
| 25
| 26 return;
| 27 }
| 28
| 29 void led_disply()
| 30 {
| 31 hal_gpio_write(GPIOE , GPIO_PIN_10 , GPIO_SET);
| 32 delay_ms(100);
| 33 hal_gpio_write(GPIOE , GPIO_PIN_10 , GPIO_RESET);
| 34 delay_ms(100);
| 35
| 36 hal_gpio_write(GPIOF , GPIO_PIN_10 , GPIO_SET);
| 37 delay_ms(100);
| 38 hal_gpio_write(GPIOF, GPIO_PIN_10 , GPIO_RESET);
| 39 delay_ms(100);
| 40
| 41 hal_gpio_write(GPIOE , GPIO_PIN_8 , GPIO_SET);
| 42 delay_ms(100);
| 43 hal_gpio_write(GPIOE , GPIO_PIN_8 , GPIO_RESET);
| 44 delay_ms(100);
| 45
| 46 hal_gpio_write(GPIOF , GPIO_PIN_10 , GPIO_SET);
| 47 delay_ms(100);
| 48 hal_gpio_write(GPIOF, GPIO_PIN_10 , GPIO_RESET);
| 49 delay_ms(100);
| 50
| 51 return;
| 52 }
| 53
| 54
| 55 int main()
| 56 {
| 57 led_init();
| 58
| 59 while(1)
| 60 led_disply();
| 61
| 62 return 0;
| 63 }
|~
|~
現(xiàn)象
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
標(biāo)題名稱(chēng):GPIOtoLEDC語(yǔ)言之點(diǎn)燈之再封裝-創(chuàng)新互聯(lián)
標(biāo)題URL:http://aaarwkj.com/article18/dohhgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、標(biāo)簽優(yōu)化、ChatGPT、動(dòng)態(tài)網(wǎng)站、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
-
CSS字體樣式-創(chuàng)新互聯(lián)
-
win10系統(tǒng)下Anaconda3安裝配置方法圖文教程-創(chuàng)新互聯(lián)
-
Amoeba相關(guān)產(chǎn)品及其介紹-創(chuàng)新互聯(lián)
-
初學(xué)ELK-創(chuàng)新互聯(lián)
-
JavaScript中有哪些遍歷數(shù)組的方式-創(chuàng)新互聯(lián)
-
php性能優(yōu)化注意點(diǎn)有哪些-創(chuàng)新互聯(lián)
-
Unity實(shí)現(xiàn)粒子光效導(dǎo)出成png序列幀-創(chuàng)新互聯(lián)
-
用戶體驗(yàn)自檢清單做讓用戶記憶深刻的網(wǎng)站
2021-12-09
-
網(wǎng)站制作中應(yīng)該注重哪些用戶體驗(yàn)
2016-01-27
-
企業(yè)網(wǎng)站如何提升用戶體驗(yàn)度
2022-08-27
-
企業(yè)網(wǎng)站建設(shè)徹頭徹尾應(yīng)付用戶體驗(yàn)難有獨(dú)家特
2020-07-20
-
網(wǎng)站制作與用戶體驗(yàn)地圖
2021-05-20
-
企業(yè)網(wǎng)站建設(shè)用戶體驗(yàn)優(yōu)化服務(wù)
2022-12-26
-
企業(yè)網(wǎng)站用戶體驗(yàn)度的提高需要注意哪些方面
2014-11-21
-
SEO優(yōu)化,SEO努力的方向是做好用戶體驗(yàn)
2022-12-31
-
企業(yè)網(wǎng)站建設(shè)中影響用戶體驗(yàn)的重要因素
2022-12-06
-
企業(yè)網(wǎng)站設(shè)計(jì)制作一定要懂得揣測(cè)用戶心理然后提升用戶體驗(yàn)
2022-03-10
-
企業(yè)做一個(gè)網(wǎng)站的目的是什么:網(wǎng)站用戶體驗(yàn)_SEO技術(shù)
2021-11-04
-
網(wǎng)站優(yōu)化:怎樣圍繞用戶體驗(yàn)做SEO?
2023-04-22
色综合视频二区偷拍在线|
成人免费视频一区二区三区|
岛国毛片在线免费播放|
亚洲第一精品国产日韩|
国产原创剧情免费观看av|
国产自拍成人精品视频|
青青草原成年人免费看|
午夜性生活免费观看视频|
av第一福利大全导航|
国产精品大全中文字幕|
国产三级精品大乳人妇|
午夜激情视频福利在线观看|
麻豆专区一区二区三区|
九九视频在线观看免费观看|
日韩精品中文乱码在线观看|
亚洲国产成人不卡高清麻豆|
插美女逼免费视频导航|
91中文字幕国产日韩|
国产av蜜臀一区二区三区|
91桃色午夜福利视频|
伊人久久大香线蕉av网站
|
最新国产av网址大全|
超碰欧美性欧美最猛性|
99热在线免费观看精品|
欧美日韩国产综合下一页|
亚洲中文字幕伦理在线|
国产av午夜精品福利|
成人在线午夜你懂的视频|
蜜臀国产午夜在线视频|
韩国午夜理伦三级好看|
在线日韩欧美一区二区三区|
国产精品粉嫩在线播放|
九九九热免费在线观看|
91九色国产原创在线观看|
免费成人激情在线电影|
免费精品99久久久国产|
国产 亚洲 一区 二区|
日韩中文字幕不卡免费|
成人欧美一区二区三区av|
日韩欧美亚洲一区二区|
人妻少妇中文字幕久久|