STM32学习心得四:GPIO实验 |
您所在的位置:网站首页 › 光敏传感器实验报告心得体会和感悟总结 › STM32学习心得四:GPIO实验 |
记录一下,方便以后翻阅~ 实验内容:跑马灯、蜂鸣器和按键输入 官方资料:《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); #endif5) beep.h头文件代码分别如下: #ifndef __BEEP_H #define __BEEP_H void BEEP_Init(void); #endif6) key.h头文件代码分别如下: #ifndef __KEY_H #define __KEY_H #include "stm32f10x.h" void KEY_Init(void); u8 KEY_Scan(u8); #endif7)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 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |