历史上的今天
返回首页

历史上的今天

今天是:2025年01月14日(星期二)

正在发生

2019年01月14日 | stm32f103按键轮询实现方法

2019-01-14 来源:eefocus

(基于奋斗stm32_v5开发板)


#include"stm32f10x.h"

#define ON  1

#define OFF 0

 

void LED_GPIO_Config()

{

/*定义一个GPIO_InitTypeDef类型的结构体*/

GPIO_InitTypeDef GPIO_InitStructure;


/*开启GPIOB的外设时钟*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);


/*选择要控制的GPIOB引脚*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;


/*设置引脚模式为通用推挽输出*/

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;


/*设置引脚速率为50MHz*/

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;


/*调用库函数,初始化GPIOB*/

GPIO_Init(GPIOB, &GPIO_InitStructure);


/*关闭LED灯*/

GPIO_SetBits(GPIOB, GPIO_Pin_5);

}

 

void Key_GPIO_Config()

{

/*定义一个GPIO_InitTypeDef类型的结构体*/

GPIO_InitTypeDef GPIO_InitStructure;


/*开启按键端口PC5的时钟*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);


/*选择要控制的GPIOC引脚*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;


/*设置引脚模式为上拉输入*/

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;


//GPIO被设置为输入模式,不需要设置GPIO端口的最大输出速度。若设置了也没关系,GPIO_Init()函数会自动忽略//


/*调用库函数,初始化GPIOC*/

GPIO_Init(GPIOC, &GPIO_InitStructure);

}

 

u8 Key_Scan(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)

{

void Delay();

/*检测是否有按键按下*/

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

{

/*消抖*/

Delay(1000);


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

{

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

return 0;

}

else

return 1;

}

else

return 1;

}

 

void Delay(uint32_t uCount)

{

    for(;uCount>0;uCount--);

}

 

 

int main(void)

{

LED_GPIO_Config();

Key_GPIO_Config();

GPIO_ResetBits(GPIOB, GPIO_Pin_5);


while(1)

{

if(Key_Scan(GPIOC, GPIO_Pin_5) == 0)

{

/*LED反转*/

GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)((1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_5))));

}

}

}


推荐阅读

史海拾趣

ERNI Electronics公司的发展小趣事

为了进一步扩大市场份额和提高品牌影响力,ERNI Electronics与全球多家分销商建立了紧密的合作关系。其中,与Digi-Key Electronics等知名分销商的合作尤为引人瞩目。通过这些合作关系,ERNI的产品能够接触到更多的新客户,并通过分销商的渠道实现更广泛的销售。这种合作模式不仅提高了公司的销售业绩,还进一步巩固了ERNI在电子行业中的领先地位。

Advanced Microelectronic Products Inc公司的发展小趣事

AMP公司深知人才是企业发展的核心动力。因此,公司高度重视人才培养和团队建设。公司建立了一套完善的人才培养机制,通过内部培训、外部引进等方式,不断提升员工的专业技能和综合素质。同时,公司还注重团队建设,鼓励员工之间的合作与交流,营造积极向上的工作氛围。这些举措为AMP公司的持续发展提供了有力的人才保障。

富信半导体(FOSAN)公司的发展小趣事

Advanced Microelectronic Products Inc(以下简称AMP公司)在电子行业中崭露头角,源于其一次关键的技术突破。公司研发团队成功开发出一种新型高效能、低功耗的芯片,该芯片在智能手机市场具有广阔的应用前景。凭借这一技术优势,AMP公司迅速与多家手机制造商建立合作关系,实现了市场的大规模扩张。公司随后进一步加大研发投入,不断推出创新产品,巩固了其在行业内的领先地位。

Boundary Devices公司的发展小趣事

为了进一步扩大市场份额,Boundary Devices积极实施国际化战略。公司通过与全球各地的合作伙伴建立合作关系,将产品推向国际市场。同时,公司还积极参加国际电子展会和技术交流活动,与全球同行进行深入的交流与合作,不断提升公司的国际影响力。

Carlisle Interconnect Components公司的发展小趣事

Carlisle Interconnect Components公司深知品质是赢得市场的关键。因此,公司建立了严格的质量管理体系,从原材料采购到生产制造,再到产品出厂,每一个环节都严格把控。这种对品质的执着追求,使得公司的产品在国际市场上获得了良好的口碑。同时,公司还积极拓展海外市场,与多家国际知名企业建立了稳定的合作关系,进一步提升了公司在全球电子连接器市场的影响力。

Diplohmatic A/S公司的发展小趣事

随着技术创新的成功,Diplohmatic A/S公司开始寻求国际市场的拓展。公司派遣了一支由经验丰富的销售和技术人员组成的团队,前往欧洲和亚洲的主要市场进行考察和洽谈。通过深入了解当地市场需求和竞争态势,公司制定了一系列有针对性的市场策略,并与多家国际知名企业建立了合作关系。这些合作不仅为公司带来了更多的订单,也提升了其品牌在国际市场的知名度。

问答坊 | AI 解惑

16舵机双足机器人-----全资料奉上!

本帖最后由 paulhyde 于 2014-9-15 03:33 编辑 来源:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3648721&bbs_page_no=1&bbs_id=9999 暑假学校里做机器人比赛,就是做出一个人型机器人来互相对打,要求无线控制的。 我因为去年做过这个 ...…

查看全部问答>

DIY微功耗基础无线网络

DIY微功耗基础无线网络…

查看全部问答>

直流接触器和交流接触器的区别?

应用场合不同,选择交流或直流取决于线圈,直流接触器的线圈只能通直流,交流接触器的线圈只能通交流工作。一般来说,在交流回路当中,主回路用的交流,辅助助回路一般都是从主回路上取电做控制回路,那么控制回路显然也是交流的,那么就要用交流接 ...…

查看全部问答>

PB5编写FLASH驱动

小弟刚上手驱动开发不久,现在用PB5.0做驱动。 现在是想按扇区读写全部的flash rom,我知道PB中有FMD_WriteSector等函数可以读写扇区,但不知道如何调用? 另外我还想问一下,用PB FOR CE5.0写的驱动能在windows mobile 上面用吗? 谢谢各位高手…

查看全部问答>

在这里居然看到母校的技术交流贴

在这里居然看到母校的技术交流贴,热泪盈眶 老泪纵横!…

查看全部问答>

用过AT24C02的高手请指教!

#include <STM8S105C_S.h> #define uchar unsigned char #define uint unsigned int #define data_out PB_DDR|=0X04; #define data_in PB_DDR&=~0X04; #define scl_H PB_ODR|=0X02; #define scl_L PB_ODR&=~0X02; #define sda_ ...…

查看全部问答>

【求助】换了片子,烧写不成,是什么问题?急!!!

用f123做了个电路板,用的是前2年的片子,烧写调试成功,偶然间不小心烧了片子,换了新的(刚买的),然后就提示60错误,找不到设备,请教斑竹为什么?头都大了,电路没问题的,用的是同样的电路板(同一批做的),元件也一样,是什么问题啊? 1。 ...…

查看全部问答>

【求助】【讨论】关于用149做交流电流0-5mA得采样电路问题

互感器输出为交流0-5mA,用149采样确定电流值!!!! 请高手指点!!!!…

查看全部问答>

请问大家IAR和CCS哪个用的人数多?

新手问一下,IAR和CCS哪个用的人数多,哪个更好用一点?你们更喜欢哪一个?…

查看全部问答>

lowlevel_init.S的system_clock_init函数放到C语言下面实现——更好处理

在uboot原来的代码里,有系统时钟的初始化函数,在board/samsung/smdkv210/lowlevel_init.S的system_clock_init函数,我大概看了一下,寄存器不一样,而且是汇编写的,所以我就改成用c语言来实现,在BL1阶段初始化一下,BL2阶段就不用重新初始化了 ...…

查看全部问答>