//main的完整过程:
int main(void){
LED_GPIO_CONFIG(); //定义LED灯;
KEY_GPIO_CONFIG(); //定义按键;
//循环判断按键的过程:
while(1){
if((KEY_SCANF(GPIOC,GPIO_Pin_5)==0)){ //确定按键完全按下
if(GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2)==0) //当灯都亮起时,GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2)读到输出数据;
GPIO_SetBits(GPIOD,GPIO_Pin_2); //置位,灯灭;
else
GPIO_ResetBits(GPIOD,GPIO_Pin_2); //复位,灯亮
}
}
}
//关于KEY的操作;
//实现操作:(初始时灯亮)按一下按键后灯灭,再按一下灯亮;
先按之前的代码点亮一个LED灯;
GPIO_InitTypeDef GPIO_D;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
GPIO_D.GPIO_Pin=GPIO_Pin_2;
GPIO_D.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_D.GPIO_Speed=3;
GPIO_Init(GPIOD,&GPIO_D);
//然后定义按键;
void KEY_GPIO_CONFIG(void)
{
GPIO_InitTypeDef GPIO_C;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_C.GPIO_Pin=GPIO_Pin_5;
GPIO_C.GPIO_Mode=GPIO_Mode_IPU;
GPIO_C.GPIO_Speed=1;
GPIO_Init(GPIOC,&GPIO_C);
}
//定义按键和定义LED灯的过程差不多,主要区别在于Mode的配置上;
/*
4种输入模式 :
GPIO_Mode_IPD(下拉输入模式):在默认情况下(GPIO引脚无输入的情况下),读取得GPIO的引脚数据为1;
GPIO_Mode_IPU(上拉输入模式):在默认情况下(GPIO引脚无输入的情况下),读取得GPIO的引脚数据为0;
GPIO_Mode_IN_FLOATING(浮空输入模式):在芯片内部既没有上拉也没有下拉,经由触发器输入。由于其阻抗较大,所以一般把这种模式用于标准的通信协议如I2C,USART的接收端。
GPIO_Mode_AIN(模拟输入模式):关闭施密特触发器,不接入上、下拉电阻,经由另一线路把电压信号传送到片上外设模块。如传送到ADC模块,由ADC模块采集电压信号。所以使用ADC外设的时候,必须设置为模拟输入模式。
4种输出模式:
GPIO_Mode_Out_PP(普通推挽输出):一般用于输出电平为0和3.3V的场合。
GPIO_Mode_Out_OD(普通开漏输出):一般应用在电平不匹配的场合,如需要输出5V的高电平,就需要在外部接一个上拉电阻,电源为5V,把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5V的电平。
GPIO_Mode_AF_PP(复用推挽输出):
GPIO_Mode_AF_OD(复用开漏输出):
*/
//根据原理图:当KEY没有按下时为高电平,按下时为低电平,根据上述模式的介绍,可以选择上拉输入模式(GPIO_Mode_IPU)
//定义一个扫描KEY输入的函数:
u8 KEY_SCANF(GPIO_TypeDef* a,u16 PIN)
{
if(GPIO_ReadInputDataBit(a,PIN)==0){
Delay(10000); //按键消抖
if(GPIO_ReadInputDataBit(a,PIN)==0){
while(GPIO_ReadInputDataBit(a,PIN)==0);//
return 0;
}
else{
return 1;
}
}
else
return 1;
}
//逐句分析:
if(GPIO_ReadInputDataBit(a,PIN)==0):
//新的库函数:GPIO_ReadInputDataBit(a,PIN),读取输入的数据,可用输入电平高低判断。
//根据调用函数:KEY_SCANF(GPIOC,GPIO_Pin_5) 可知,判断的是KEY是否有输入;
//当没有按下KEY时,应输入模式确定为上拉输入模式,所以默认为高电平。然后,若有按下KEY,则输入变为低电平。
//第二个
if(GPIO_ReadInputDataBit(a,PIN)==0) //是确认确实有按键按下,而不是按下一半返回。
while(GPIO_ReadInputDataBit(a,PIN)==0);//不停的检测按键的电平,直至按键被释放,被释放后,按键的电平又恢复到默认的高电平。
//实际上这一整个过程都是按键扫描、消抖。
上一篇:stm32GUI滑杆图形操作界面
下一篇:STM32CubeMx-ADC
推荐阅读
史海拾趣
随着电子行业的快速发展,对高精度电子元件的需求日益增长。海德汉公司凭借其iTNC系列数控系统的高精度控制能力,成为众多电子元件制造商的首选合作伙伴。某知名电子元件生产商在引入海德汉iTNC 530数控系统后,成功实现了微型电子元件的精密加工,将加工精度提升至微米级,大大提高了产品的质量和市场竞争力。这一合作不仅巩固了海德汉在高精度加工领域的领先地位,也推动了电子行业向更高精度、更高质量方向发展。
Ferroperm公司成立于XXXX年,由一群热衷于电磁材料研究的科学家和工程师共同创立。创立之初,公司便致力于电磁材料和相关产品的研发和生产。通过对市场需求的精准把握和对技术创新的持续投入,Ferroperm很快在电磁材料领域取得了初步的成功,并积累了一定的客户基础。
面对不断变化的市场环境和客户需求,Datapro International Inc公司始终保持着对创新的追求。他们不断投入研发资源,推动新技术和新产品的不断涌现。同时,他们还积极关注行业趋势和客户需求的变化,以便及时调整自己的发展战略和业务模式。
在未来的发展中,Datapro International Inc公司将继续秉承“创新、质量、服务”的理念,致力于为客户提供更加卓越的产品和服务。同时,他们也将积极探索新的市场机会和商业模式,以实现更加持续、稳健的发展。
请注意,以上故事均为虚构内容,旨在展示一个电子行业公司可能的发展历程和故事。如需了解Datapro International Inc公司的真实历史和发展故事,请查阅相关官方资料或行业报告。
Comchip Technology公司于2000年在新北市莺歌区创立,创始人凭借对半导体技术的深刻理解和前瞻眼光,决定专注于二极管制造技术的研发与创新。在创立初期,公司面临资金紧张、市场竞争激烈等挑战,但凭借卓越的技术实力和坚定的信念,成功开发出了一系列高质量的二极管产品,逐渐在市场中站稳脚跟。
随着公司业务的不断拓展,CMD开始在全球范围内建立销售办事处。从最初的美国加利福尼亚州Irvine总部,逐渐扩展至加州、明尼苏达州、马萨诸塞州,甚至英国等地。这一布局不仅增强了公司的市场影响力,也为其提供了更多的商业合作机会。
随着新能源汽车市场的快速发展,铨力公司看到了新的发展机遇。于是,公司开始布局新能源汽车领域,研发和生产新能源汽车所需的电源和充电设备。通过不断创新和拓展市场,铨力在新能源汽车领域也取得了显著的成绩,为公司的发展注入了新的动力。
这五个故事展示了铨力(ALLPOWER)公司在电子行业中的发展历程和取得的成就。从创立初期的太阳能电源产品研发,到技术突破和产品升级,再到国际市场的拓展和产业链整合,以及新能源汽车领域的布局,铨力始终保持着创新的精神和进取的态度,不断推动着公司的发展。
么是零件封装,它和零件有什么区别? (1)零件封装是指实际零件焊接到电路板时所指示的外观和焊点位置。 (2)零件封装只是零件的外观和焊点位置,纯粹的零件封装仅仅是空间的概念,因此不同的零件可以共用同一个零件封装;另一方面,同种零 ...… 查看全部问答∨ |
|
1,使用开发套件中的交叉网线直连开发板和电脑。vmware版本7.1.0 build-261024。ubuntu 9.102,烧写 u-boot.bin zImage_WXCAT43 OK6410_touch_v1.0.cramfs3,ip设置:ubuntu主机设置为192.1 ...… 查看全部问答∨ |
|
有哪位哥哥知道DEC2812板为何选用既有电源监视又具有看门狗作用的TPS3823-33? 看了TPS3823-33.PDF资料,TPS3823-33除开电源监控作用外,还具有看门狗作用,喂狗由WDI输入。疑问:F2812内部不是集成了看门狗吗,为何外面还要这么一块芯片,会不会增加了电路的复杂程度,选用一个仅有电源监控的芯片不就可以了吗? … 查看全部问答∨ |