历史上的今天
今天是: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))));
}
}
}
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 03:33 编辑 来源:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3648721&bbs_page_no=1&bbs_id=9999 暑假学校里做机器人比赛,就是做出一个人型机器人来互相对打,要求无线控制的。 我因为去年做过这个 ...… 查看全部问答> |
|
应用场合不同,选择交流或直流取决于线圈,直流接触器的线圈只能通直流,交流接触器的线圈只能通交流工作。一般来说,在交流回路当中,主回路用的交流,辅助助回路一般都是从主回路上取电做控制回路,那么控制回路显然也是交流的,那么就要用交流接 ...… 查看全部问答> |
|
小弟刚上手驱动开发不久,现在用PB5.0做驱动。 现在是想按扇区读写全部的flash rom,我知道PB中有FMD_WriteSector等函数可以读写扇区,但不知道如何调用? 另外我还想问一下,用PB FOR CE5.0写的驱动能在windows mobile 上面用吗? 谢谢各位高手… 查看全部问答> |
|
#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。 ...… 查看全部问答> |
|
lowlevel_init.S的system_clock_init函数放到C语言下面实现——更好处理 在uboot原来的代码里,有系统时钟的初始化函数,在board/samsung/smdkv210/lowlevel_init.S的system_clock_init函数,我大概看了一下,寄存器不一样,而且是汇编写的,所以我就改成用c语言来实现,在BL1阶段初始化一下,BL2阶段就不用重新初始化了 ...… 查看全部问答> |




