历史上的今天
今天是:2025年01月17日(星期五)
2019年01月17日 | STM32:STM32学习记录3:按键输入
2019-01-17 来源:eefocus
1:IO配置:。上拉输入模式:区别在于没有输入信号的时候默认输入高电平(因为
有弱上拉)。下拉输入模式:区别在于没有输入信号的时候默认输入低电平(因为有弱下拉)。对于浮空输入模式顾名思义也就是输入什么信号才是什么信号,对于浮空输入要保证有明确的输入信号。
2:stm32的GPIO既可以设置为输出也可以设置为输入,当设置为输入时,输出还是可以有效的,当设为上拉时,可以把输出设为高电平,而设为下拉输入时,把输出设为低电平,这样就有了上拉和下拉。
3:STM32 支持 JTAG 和 SWD 两种仿真接口,他们和普通的 IO 口共用,当需要使用普通 IO口的时候,则必须先禁止 JTAG/SWD。STM32 在默认状态下是开启 JTAG 的,所以那些和 JTAG共用的 IO 口,在默认状态下是不能做普通 IO 口使用的。
我们可以通过 AFIO_MAPR 寄存器的24~26 位来修改 STM32 的 JTAG 配置,从而切换为普通 IO 口或者其他状态。
原程序如下:
#include"sys.h"
#include"delay.h"
#include"usart.h"
#define KEY0 PAin(13) //PA13
#define KEY1 PAin(15) //PA15
#define KEY2 PAin(0) //PA0 WK_UP
#define LED0 PAout(8)
#define LED1 PDout(2)
void IO_Init(void)
{
RCC->APB2ENR|=1<<2; //使能 PORTA 时钟
GPIOA->CRL&=0XFFFFFFF0;//PA0 设置成输入
GPIOA->CRL|=0X00000008; //PA0 上拉下拉模式
GPIOA->CRH&=0X0F0FFFFF;//PA13,15 设置成输入
GPIOA->CRH|=0X80800000; //PA13,PA15 上拉下拉模式
GPIOA->ODR|=1<<13; //PA13输出1时 上拉
GPIOA->ODR|=1<<15; //PA15输出1时 上拉 默认输出为0,所以PA0默认是下拉
}
void LED_Init(void) //PA8,PD2为输出口
{
RCC->APB2ENR|=1<<2;//使能PORTA时钟
RCC->APB2ENR|=1<<5;//使能PORTD时钟
GPIOA->CRH&=0xFFFFFFF0;
GPIOA->CRH|=0x00000003;//PA8推挽输出
GPIOA->ODR|=1<<8;//PA8输出高
GPIOD->CRL&=0xFFFFF0FF;
GPIOD->CRL|=0x00000300;//PD2推挽输出
GPIOD->ODR|=1<<2;//PD2输出高
}
u8 Key_Scan(void)
{
JTAG_Set(JTAG_SWD_DISABLE); //关闭JTAG
if(KEY0==0) //按键按下时为低电平
{
while(KEY0==0);
JTAG_Set(SWD_ENABLE);
return 0;
}
if(KEY1==0)
{
while(KEY1==0);
JTAG_Set(SWD_ENABLE);
return 1;
}
if(KEY2==1) //按键按下时为高电平
{
while(KEY2==1);
JTAG_Set(SWD_ENABLE);
return 2;
}
else
{
JTAG_Set(SWD_ENABLE);
return 3;
}
}
int main(void)
{
u8 t=0;
Stm32_Clock_Init(9);
delay_init(72);
LED_Init();
IO_Init();
while(1)
{
t=Key_Scan();
switch(t)
{
case 0:
LED0=!LED0;
break;
case 1:
LED1=!LED1;
break;
case 2:
LED0=!LED0;
LED1=!LED1;
break;
}
}
}
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:26 编辑 在DDS设计中,要求实现VPP的幅度调整,看过一些资料是用产生波形的DA的输出接在ad0832的VREF端,我有几个问题不是很清楚: 1、这样的连接方法,是不是对DA的速度没有要求?就是说信号的频率高于DA的 ...… 查看全部问答> |
|
操作系统兼容的问题, Windows, Linux, Vxworks..... 如题,众所周知现在的操作系统比较有名的是Windows, Linux, Vxworks, 他们的共性有如下: 1)可以创建线程 2)可以动态加载库文件 3)支持线程间通讯互斥 当然都支持C,C++标准语法,如new等等. 本人不才,请问还有其它操作系统支持以上特性否,请举例 ...… 查看全部问答> |
|
初学wince,我使用platform builder定制了个系统(照着一篇文章的介绍一步一步做的),编译SDK的过程很顺利,问题是在装完编译得到的SDK后,进入EVC环境,一选则自定义的SDK,系统就会死机。请问这是什么原因?是我SDK编译的问题还是EVC环境设置问 ...… 查看全部问答> |
|
这些天的业余时间将围绕德州仪器(TI)的Cortex-A8 AM335x系列处理器进行学习,因为这款处理器的相关中文资料还很少,配套的开发板也是近期才推出的,在国内更是稀罕货,所以现在先从外文资料的翻译和学习先开始,翻译水平有限,也请 ...… 查看全部问答> |
|
目前,MOS工艺的绝缘栅场效应管由于其优越的性能在分立元件和集成电路方面都得到了广泛的应用。由其结构可以看出,目前的场效应管是在沟道的两端各扩散一个PN结,形成一种PN结背靠背连接的结构。 以P型衬底N沟道增强型场效应管为例,在电路中,源 ...… 查看全部问答> |
|
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第六十章 UCOSII实验3-消息... 第六十章 UCOSII实验3-消息队列、信号量集和软件定时器 上一章,我们学习了UCOSII的信号量和邮箱的使用,本章,我们将学习消息队列、信号量集和软件定时器的使用。本章分为如下几个部分:60.1 UCOSII消息队列、信号量集和软件定时器简介60.2 硬件 ...… 查看全部问答> |
|
1.Sate210-F 核心板硬件说明... 41.1概述... 41.2电气特性... 71.3引脚描述... 81.4接口描述... 191.4.1 通用数据总线SROM接口... 191.4.2 摄像头接口(CAMIF).. 211.4.3 LCD驱动器接口... 241.4.4 HDMI接口... 281.4.5 USB 2.0 HOST接口... 291.4.6 ...… 查看全部问答> |




