历史上的今天
今天是:2025年01月14日(星期二)
2019年01月14日 | STM32 实战 按键点亮LED(中断)
2019-01-14 来源:eefocus
来看看最简单的点亮一个灯的实验你把,实验要求使用KEY4*4按键,按键按下灯亮,按键拿起灯灭,如此一直循环:
程序的思路如下:
1、首先需要设置的是时钟:你将灯的管脚连在哪个端口的某个引脚上面,你就开启哪个端口的时钟,比如灯连在A端口的某个引脚,就要开启A端口的时钟。
2、其次,设置管脚(我们要设置LED和矩阵键盘中的一个键的管脚): 我们需要对GPIO进行初始化设置,我们只需调用 GPIO_InitTypeDef的结构体,对每个成员进行设置,要设置的有PIN管脚的位置GPIO_Pin,还有管脚的速率GPIO_Speed,还有管脚的工作状态GPIO_Mode,最后在调用一下初始化的函数GPIO_Init,
3、然后就开始写我们的主函数:假如我想让led灯的管脚置为高电平,我只需调用GPIO_SetBits函数,它是将管脚置为高电平,若想置为低电平则调用GPIO_ResetBits函数就可以。
4、最后我们要让它按下时亮,抬起时灭,我们需要if语句
——————————————————————————————————————————————————-
下边为程序:所用芯片为STM32F103C8T6 LED控制管脚为C13 矩阵键盘为B9
首先是控制小灯为推挽式输出
void LED_Init (void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//初始化GPIOC时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
然后是配置矩阵键盘
void KEY_Init (void)
{
GPIO_InitTypeDef GPIO_InitStructure;//配置PB9上拉输入
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//初始化GPIOB时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
接下来时主函数
int main()
{
LED_Init();
KEY_Init();
while(1)
{
LED = 1;
if(KEY == 0)
{
LED = 0;
}
}
}
好嘞,就这样勒。
史海拾趣
|
近日,高速无线宽带服务供应商Clearwire宣布了和Intel和Motorola的一系列交易,内容包括Clearwire将获得了9亿美元的融资,这包括英特尔风险投资公司Intel Capital的6亿美元,摩托罗拉将收购Clearwire公司的Nex ...… 查看全部问答> |
|
由于帖子的不断更新以及论坛的现实篇幅有限,故难免会有一些好贴沉下去而不能发挥余热~~~ 在此特整理汇总全国大学生电子设计竞赛相关帖子链接,方便大家查阅浏览~~~~(不断更新中) 本汇总贴是人工寻找的,可能会有遗漏和不当,请大家见谅~~~发现有 ...… 查看全部问答> |
|
选用的是TMS320C6713 外挂FLASH和SDRAM 程序分为3部分 1K bootload汇编程序 基本通信程序 算法主程序 上电后EDMA自动从FLASH加载1K bootload代码到IRAM,利用bootload程序将基本通信程序加载到IRAM,利用_c_int00跳转到基本通信程序执行。再利用 ...… 查看全部问答> |
|
在飞凌S3C6410开发板上成功移植VXWORKS嵌入式操作系统! 本文出自 飞凌嵌入式官方网站 www.witech.com.cn VXWORKS是当今最稳定可靠的嵌入式实时操作系统,TE6410作为高端嵌入式开发板,已经被成功移植 VXWORKS,附件为相关文档(版权问题,部分内容未能发布,此文档仅作为参考,希望对朋友们 ...… 查看全部问答> |
|
我是一名新手,我用wince5.0编译一个新建的PB的时候,提示有下面的错误: making: FATAL ERROR:Cannot open F:\\新建文件夹\\2222\\Reldir\\smdk2440a_ARMV4I_Relea\\postproc\\platform.bib making: FATAL ERROR:Cannot open F:\\新建文件夹\\ ...… 查看全部问答> |
|
OSCCON=0x70; //内部时钟8Mhz PORTD=0; TRISD=0; T0CON=0x05; //关定时器,16位,内部时钟源,64分频 TMR0H=??; //0.1s TMR0L=?? 如何计算这两个值使时间为0.1s?在线等啊 我算出来一直多了2倍 诶… 查看全部问答> |
|
这里用的f_write是例程中自带的,应该没有错吧。可是不知道为什么就是写不进去。 例如试验如下: A.txt原有内容是zyz 在超级终端输入命令: write a.txt china 显示是写成功的,可是打开a.txt。里面的内容却不是china,而是原来的数据。哪位前 ...… 查看全部问答> |
|
在下列定义中 struct HISPCP_BITS { // bits description Uint16 HSPCLK:3; // 2:0 Rate relative to SYSCLKOUT Uint16 rsvd1:13; & ...… 查看全部问答> |
|
LPC1114在keil MDK下载报错flash timeout 各位大大! 我的原理图 利用keilV4.13a下载的时候,总是如下报错: 但是,Utilities setting中已显示检测到ARM core,如下图: 网上百度了很多,感觉是flash算法的问题,请问哪位大大能帮我看看? 原理图上reset管脚直接置高的作 ...… 查看全部问答> |




