嵌入式系统GPIO作业Word下载.docx

上传人:b****1 文档编号:3164531 上传时间:2023-05-01 格式:DOCX 页数:16 大小:1.22MB
下载 相关 举报
嵌入式系统GPIO作业Word下载.docx_第1页
第1页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第2页
第2页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第3页
第3页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第4页
第4页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第5页
第5页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第6页
第6页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第7页
第7页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第8页
第8页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第9页
第9页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第10页
第10页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第11页
第11页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第12页
第12页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第13页
第13页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第14页
第14页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第15页
第15页 / 共16页
嵌入式系统GPIO作业Word下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

嵌入式系统GPIO作业Word下载.docx

《嵌入式系统GPIO作业Word下载.docx》由会员分享,可在线阅读,更多相关《嵌入式系统GPIO作业Word下载.docx(16页珍藏版)》请在冰点文库上搜索。

嵌入式系统GPIO作业Word下载.docx

3.根据键盘和LED连接电路设计GPIO初始化配置函数,使键盘和LED能正常工作(程序要加注释)。

4.介绍LED和按键的工作原理,并设计程序由按键控制LED灯的亮灭,控制逻辑自定义,不能雷同。

1.GPIO结构(20分)

每组GPIO端口都有如下7个寄存器:

偏移地址

●CRL:

端口配置寄存器(低32位)0x0000

●CRH:

端口配置寄存器(高32位)0x0004

●IDR:

输入数据寄存器0x0008

●ODR:

输出数据寄存器0x000c

●BSRR:

端口位设置/清除寄存器0x0010

●BRR:

端口位清除寄存器0x0014

●LCKR:

端口配置锁定寄存器0x0018

工作原理:

●输出缓冲器被禁止

●施密特触发输入被激活

●根据输入配置的不同,弱上拉和下拉电阻被连接

●出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器

●对输入数据寄存器的读访问可得到I/O状态

●输出缓冲器被激活

─开漏模式:

输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将端口置于高阻

状态(P-MOS从不被激活)。

─推挽模式:

输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将激活P-MOS。

●弱上拉和下拉电阻被禁止

●在开漏模式时,对输入数据寄存器的读访问可得到I/O状态

●在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值。

2.GPIO相关库函数介绍(10分)

3.GPIO初始化函数:

(20分)

voidLED_GPIO_Config(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

/开启时钟/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_5;

/定义引脚/

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

/推挽输出/

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

/设置频率/

GPIO_Init(GPIOB,&

GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_5;

GPIO_Init(GPIOC,&

GPIO_SetBits(GPIOB,GPIO_Pin_0);

GPIO_SetBits(GPIOC,GPIO_Pin_5|GPIO_Pin_1);

}

4.按键识别函数:

#include"

stm32f10x.h"

bsp_led.h"

bsp_key.h"

intmain(void)

{

/*configtheled*/

LED_GPIO_Config();

LED1_ON;

/*configkey*/

Key_GPIO_Config();

while

(1)

{

Scan();

}

staticvoidKey_Delay(__IOu32nCount)

{

for(;

nCount!

=0;

nCount--);

}

voidKey1_GPIO_Config(void)

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;

GPIO_Init(GPIOA,&

voidKey2_GPIO_Config(void)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;

GPIO_Init(GPIOC,&

voidKey_GPIO_Config(void)

Key1_GPIO_Config();

Key2_GPIO_Config();

voidScan(void)

if(Key_Scan(GPIOA,GPIO_Pin_0,1)==KEY_ON)

{

LED1_TOGGLE;

/*LED1反转*/

}

if(Key_Scan(GPIOC,GPIO_Pin_13,1)==KEY_ON)

LED2_TOGGLE;

uint8_tKey_Scan(GPIO_TypeDef*GPIOx,u16GPIO_Pin,uint8_tDown_state)

{

if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==Down_state)

Key_Delay(10000);

if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==Down_state)

{

while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==Down_state);

returnKEY_ON;

}

else

returnKEY_OFF;

else

returnKEY_OFF;

5.主程序:

(30分)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==Down_state);

voidKey_Test(void)

LED2_ON;

Key1_GPIO_Config();

if(Key_Scan(GPIOA,GPIO_Pin_0,1)==KEY_ON)//KEY1

if(Key_Scan(GPIOC,GPIO_Pin_13,0)==KEY_ON)//KEY2

/*LED2反转*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_5;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2