寄存器和库函数.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操纵寄存器&调用库函数

编程步骤:

1、原理图一一硬件的连接方式

2、芯片手册一一怎样使用芯片

3、编写程序

d 外设功能初始化配置

e 外设使能

f 外设中断使能和中断优先级配置

g 其他功能函数 LED 初始化

一、寄存器 总时钟初始化 端口时钟初始化 //b 为10端口 (PB/PA/PE 等)在APB2的位置 j 青除端 口 默认值 GPI0A->CRL &二 OxFOOFFFFF; 〃由GPIOA->CRL/H 给PAx 配置位x 清零 设置端 口 工作模式 GPIOA->CRL | = 0x03300000;

〃根据表17、18配置

LED 设置为 OFF GPIOA->ODR I = 1«5 I 1«6; 〃由数据输出寄存器控制,0—ONJ —OFF

a 总时钟初始化

b 外设时钟初始化

c 外设10配置 Stm32_ClockJnit(9); RCC->APB2ENR |= l«b;

二、库函数

GPIO」nitTypeDef GPIO」nitLed; 〃定义结构体变量端口时钟初始化

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|

RCC_APB2Periph_GPIOB,

ENABLE);

设置端口工作模式(推挽输出)

GPIO InitLed.GPIO Mode = GPIO Mode Out PP;

GPIO InitLed.GPIO Pin = GPIO Pin 5;

GPIO」nitLed・GPIO_Speed = GPIO_Speed_50MHz;

〃由GPIOJnitStruct^指定的参数初始化外设GPIOx寄存器GPIO _lnit(GPIOB,&GPIO JnitLed);

GPIO Jn it(GPIOA,&GPIO JnitLed);

LED设置为OFF

GPIO_SetBits(GPIOA,GPIO_Pi n_5);

GPIO_SetBits(GPIOA,GPIO_Pin_5);

//GPIO_SetBits 设置,GPIO_ResetBits 清除〃或EEP初始化(和LED类似)

GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET);

KEY初始化

一、寄存器

端口时钟初始化RCC->APB2ENR |= 1«2|1«6;

j青除端口默认值GPIOA->CRL &二 OxFFFFFFFO; 设置端口工作模式GPIOA->CRL | = 0x00000008;

端口输岀位设置GPIOA->ODR | = 1«0;

〃上拉为高电平置1 按键检测

if(!(GPIOA->IDR & (1«0)))//按下为低电平

delay_ms(50);//隔50ms 看是否满足

if(!(GPIOA->IDR & (1«0)))

return UP;

}

〃由输入寄存器GPIOA4DR来检测是否按下二、库函数

GPIO」nitTypeDef GPIO」nitKey;

端口时钟初始化

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|

RCC_APB2Periph_GPIOE,

ENABLE);

设置端口工作模式(浮空输入)

GPIO」n itKey.GPIO_Mode = GPIO_ModeJN_FLOATING; GPIO」n itKey.GPIO_Pin = GPIO_Pin_0;

GPIO Jn it(GPIOA,&GPIO JnitKey);

按籲检测

#define KEY1

GPIO_ReadlnputDataBit(GPIOA,GPIO_Pin_0)

〃检测函数GPIO_ReadlnputDataBit 读GPIOA->IDR 的数据if(KEYl==O)

{

Delay(5000);

if(KEYl==O)

return UP;

长按短按(见工程STM32_1)

2、按下灯亮,再按下灯灵

2、长按灯亮,长按灯灭

2.1、长按为多次处理(按着一直亮)

2.2、长按仅为一次处理(按着只亮一次)

相关文档
最新文档