STM32学习心得四:GPIO实验

您所在的位置:网站首页 光敏传感器实验报告心得体会和感悟总结 STM32学习心得四:GPIO实验

STM32学习心得四:GPIO实验

2024-07-15 16:58:01| 来源: 网络整理| 查看: 265

记录一下,方便以后翻阅~ 实验内容:跑马灯、蜂鸣器和按键输入 官方资料:《STM32中文参考手册V10》第8章 通用和复用功能IO(GPIO和AFIO) 特点:不涉及位操作相关代码,适合初学寄存器操作的朋友 原理图: 1)如图所示,跑马灯,PB5接LED0,PE5接LED1; 在这里插入图片描述2)如图所示,蜂鸣器,PB8接BEEP(蜂鸣器); 在这里插入图片描述 3)如图所示,PE4接KEY0,PE3接KEY1,PE2接KEY2,PA0接WK_UP。 在这里插入图片描述 工作原理不细讲,一定要看清外设与哪个GPIO管脚对接。 涉及寄存器: 1)RCC寄存器——APB2外设时钟使能寄存器(RCC_APB2ENR),偏移地址:0x18,复位值:0x0000 0000; 在这里插入图片描述2)GPIO寄存器——端口配置低寄存器(GPIOx_CRL) (x=A…E),偏移地址:0x00 ,复位值:0x4444 4444; 在这里插入图片描述 在这里插入图片描述 3)端口配置高寄存器(GPIOx_CRH)(x=A…E),偏移地址:0x04 ,复位值:0x4444 4444; 在这里插入图片描述 4)GPIO寄存器——端口输出数据寄存器(GPIOx_ODR) (x=A…E),地址偏移:0Ch ,复位值:0x0000 0000; 在这里插入图片描述 5)端口输入数据寄存器(GPIOx_IDR)(x=A…E),地址偏移:0x08 ,复位值:0x0000 XXXX; 在这里插入图片描述) 实验步骤: 1) 新建工程模板; 2) 新建HARDWARE空文件夹(与USER文件夹并列); 3) 在MDK软件中,新建led.c,beep.c和key.c三个.c文件以及对应的led.h,beep.h和key.h头文件,均保存在HARDWARE文件夹中; 4) led.h头文件代码分别如下:

#ifndef __LED_H #define __LED_H void LED_Init(void); #endif

5) beep.h头文件代码分别如下:

#ifndef __BEEP_H #define __BEEP_H void BEEP_Init(void); #endif

6) key.h头文件代码分别如下:

#ifndef __KEY_H #define __KEY_H #include "stm32f10x.h" void KEY_Init(void); u8 KEY_Scan(u8); #endif

7)led.c文件代码分别如下:

#include "led.h" #include "stm32f10x.h" void LED_Init(void) { RCC->APB2ENR|=1ODR|=1CRL|=0X00300000; //PE.5推挽输出,3对应二进制0011,即推挽输出模式,最大速率50MHz, GPIOE->ODR|=1 RCC->APB2ENR|=1CRL&=0XFFF000FF; GPIOE->CRL|=0X00088800; //PE2,PE3,PE4配置为输入模式,8对应二进制1000,即输入 GPIOE->ODR|=7 delay_ms(10);//去抖动 key_up=0; if((GPIOE->IDR&0X0004)==0)return 1; else if((GPIOE->IDR&0X0008)==0)return 2; else if((GPIOE->IDR&0X0010)==0)return 3; else if((GPIOA->IDR&0X0001)==1)return 4; }else if(((GPIOE->IDR&0X0000)==0)&&((GPIOA->IDR==0X0000)==0))key_up=1; return 0;// 无按键按下 }

10) 在MDK软件中,右键Target1,单击Manage Project Items…,在Project Items界面、Groups一栏,新建HARDWARE,并将led.c,beep.c和key.c三个.c文件添加进来; 11) 在MDK软件中,单击魔术棒,在C/C++选项里,单击Include Paths右边的…,添加led.h,beep.h和key.h三个头文件的目录(即HARDWARE); 12) 新建main.c主函数,代码如下:

#include "stm32f10x.h" #include "delay.h" #include "led.h" #include "beep.h" #include "key.h" int main(void) { vu8 key=0; delay_init(72); LED_Init(); BEEP_Init(); KEY_Init(); while(1) { key=KEY_Scan(1); if(key) { switch(key) { case 4: GPIOB->ODR|=1


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭