历史上的今天
返回首页

历史上的今天

今天是:2024年08月31日(星期六)

2020年08月31日 | STM8学习笔记(二):GPIO的输入

2020-08-31 来源:elecfans

这两天有点忙,焊了四个按键,在LED灯的基础上,实现GPIO的输入

这次用的是ST公司的官方库

组要的还是要理解GPIO的几个寄存器的功能

同时,要好好的理解它官方库里面的函数定义和用法

/**************************************************************/

void GPIO_Configuration(void)
{
GPIO_Init(LEDS_PORT, (LED1_PIN | LED2_PIN | LED3_PIN | LED4_PIN |
LED5_PIN | LED6_PIN | LED7_PIN | LED8_PIN),
GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(KEYS_PORT,(KEY1_PIN | KEY2_PIN | KEY3_PIN | KEY4_PIN),
GPIO_MODE_IN_PU_NO_IT);//配置PF7,PF6,PF5,PF4上拉输入
}

这个是GPIO的配置

/****************************************************************/

#define LEDS_PORT (GPIOD)
#define LED1_PIN (GPIO_PIN_7)
#define LED2_PIN (GPIO_PIN_6)
#define LED3_PIN (GPIO_PIN_5)
#define LED4_PIN (GPIO_PIN_4)
#define LED5_PIN (GPIO_PIN_3)
#define LED6_PIN (GPIO_PIN_2)
#define LED7_PIN (GPIO_PIN_1)
#define LED8_PIN (GPIO_PIN_0)

#define LED1_ON GPIO_WriteLow(LEDS_PORT,(LED1_PIN))
#define LED1_OFF GPIO_WriteHigh(LEDS_PORT,(LED1_PIN))

#define LED2_ON GPIO_WriteLow(LEDS_PORT,(LED2_PIN))
#define LED2_OFF GPIO_WriteHigh(LEDS_PORT,(LED2_PIN))

#define LED3_ON GPIO_WriteLow(LEDS_PORT,(LED3_PIN))
#define LED3_OFF GPIO_WriteHigh(LEDS_PORT,(LED3_PIN))

#define LED4_ON GPIO_WriteLow(LEDS_PORT,(LED4_PIN))
#define LED4_OFF GPIO_WriteHigh(LEDS_PORT,(LED4_PIN))

#define LED5_ON GPIO_WriteLow(LEDS_PORT,(LED5_PIN))
#define LED5_OFF GPIO_WriteHigh(LEDS_PORT,(LED5_PIN))

#define LED6_ON GPIO_WriteLow(LEDS_PORT,(LED6_PIN))
#define LED6_OFF GPIO_WriteHigh(LEDS_PORT,(LED6_PIN))

#define LED7_ON GPIO_WriteLow(LEDS_PORT,(LED7_PIN))
#define LED7_OFF GPIO_WriteHigh(LEDS_PORT,(LED7_PIN))

#define LED8_ON GPIO_WriteLow(LEDS_PORT,(LED8_PIN))
#define LED8_OFF GPIO_WriteHigh(LEDS_PORT,(LED8_PIN))

#define KEYS_PORT (GPIOF)
#define KEY1_PIN (GPIO_PIN_7)
#define KEY2_PIN (GPIO_PIN_6)
#define KEY3_PIN (GPIO_PIN_5)
#define KEY4_PIN (GPIO_PIN_4)


这个是IO的一些定义


推荐阅读

史海拾趣

Advanced Components Industries Inc公司的发展小趣事

随着环保意识的日益增强,ACI积极响应国家号召,致力于绿色电子产品的研发和生产。公司投入大量资源研发环保材料和技术,推出了一系列符合环保标准的产品。

这些绿色电子产品在市场上受到了广泛欢迎。消费者越来越关注产品的环保性能,ACI的产品正好满足了这一需求。同时,公司的环保理念也得到了社会各界的认可和支持,进一步提升了公司的品牌形象。

Daito Communication Apparatus Co Ltd公司的发展小趣事

随着微电子学的快速发展,电子设备对元器件的要求也越来越高。Daito公司敏锐地捕捉到了这一市场趋势,决定对保险丝进行进一步的创新。在1995年,他们成功开发出了适用于电路板安装的高精度小型报警保险丝。这一产品的推出,不仅满足了市场对小型化、高精度保险丝的需求,也进一步巩固了Daito公司在电子行业中的领先地位。

随后,Daito公司又针对微电子学的进一步发展,推出了可以连续自动安装的方形微型保险丝。这一产品的推出,大大提高了生产效率,降低了成本,同时也为客户提供了更加便捷的使用体验。近年来,随着面安装技术的兴起,Daito公司又迅速推出了适用于面安装技术的片状保险丝,再次展示了他们在电子行业中的创新实力。

请注意,由于篇幅限制,以上仅为两个故事示例。如果需要更多故事,可以进一步深入研究和探索Daito公司在电子行业中的发展历程和创新实践。

Custom Electronics Inc公司的发展小趣事

随着科技的快速发展和市场需求的变化,CEI不断调整自身的发展战略和业务结构。公司加大了对新技术、新产品的研发投入,推动产业结构的升级和转型。同时,CEI还积极探索新的商业模式和市场机会,为公司的可持续发展提供了有力保障。

AINFO Inc公司的发展小趣事

随着技术的不断进步,AINFO Inc公司不断推出创新产品,满足市场的多样化需求。公司注重产品的质量和性能,通过优化设计和生产工艺,提高了产品的竞争力。同时,公司积极开拓国内外市场,与多家知名企业建立了合作关系,实现了产品的广泛应用。

Advanced_Linear_Devices_Inc.公司的发展小趣事

在质量管理方面,ALD始终坚持以客户为中心的原则,不断完善其质量体系。公司建立了严格的质量控制流程,从原材料采购到产品生产的每一个环节都进行严格把关。同时,ALD还引入了先进的质量检测设备和方法,确保每一片集成电路都符合客户的要求和标准。这些措施不仅提高了产品的质量和可靠性,还赢得了客户的信任和好评。

以上五个故事均基于ALD在电子行业中的发展事实进行构建,旨在展示公司在技术创新、产品线拓展、封装技术创新、国际化战略推进以及质量体系完善等方面的努力和成就。这些故事不包含任何主观评价,仅是对事实的客观描述。

Allied Wire & Cable Inc公司的发展小趣事

Allied公司深知客户是公司发展的核心动力。因此,公司始终将客户服务放在首位,为客户提供全方位、个性化的服务支持。无论是产品咨询、技术支持还是售后服务,Allied公司都力求做到最好,赢得了客户的信任和好评。同时,公司还积极与合作伙伴建立长期稳定的合作关系,共同开拓市场,实现互利共赢。

问答坊 | AI 解惑

电路基本概念

电  流 电荷的定向移动叫做电路中,电流常用I表示。电流分直流和交流两种。电流的大小和方向不随时间变化的叫做直流。电流的大小和方向随时间变化的叫做交流。电流的单位是安(A),也常用毫安(mA)或者微安(uA)做单位。1A=1000mA,1mA=1000uA ...…

查看全部问答>

C语言时钟程序在KEIL中提示出错

#include                         #define uchar unsigned char #define uint unsigned int char DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,     ...…

查看全部问答>

多线程中使用WSAStartup和WSAClearup

我该在那里调用WSAStartup和WSAClearup呢,是每个线程在进入时调用一次WSAStartup、退出时调用一次WSAClearup呢,还是在主函数中调用一次WSAStartup和WSAClearup呢? 我现在有两个类,两个类都使用了网络,都开了一个线程,我现在的做法是在每个类 ...…

查看全部问答>

I2C的传输速度(比如100,400)要求严格吗?

我如果是模拟的I2C,速度打算为100Kbit/S,那么对应一个2进制位数据,延迟时间为10US,那么我在人为的拉高拉低SCL的时候是不是一定要保持频率为100K? 如果我输出了个比如80K,会不会出错,我还没有做实验,先听听大家的意见 谢谢…

查看全部问答>

使用LoadImage加载位图总是错误

我加载位图的代码如下: BOOL CBingGuoDlg::InitGame() {         CClientDC dc(this);         SelDC = new CDC;         BltDC = new CDC;         bmpT ...…

查看全部问答>

【转载】房子我喜欢Q版,车子却偏爱大肚腩

前几天看到坛子里有兄弟贴出了B70的平均油耗,着实超出我的意料,没想到2.0MT的平均油耗能控制在8个油,这可是我买车首要参照的系数,不然就真是买车容易养车难了;此外,空间必须足够大,谁让咱的房子已经是Q版了,车子可不能在抠抠嗖嗖的了。 ...…

查看全部问答>

香版主:虚拟串口

香版主:STM32USB的虚拟串口怎么用?我下了这个"VCPDriver_V1.1_Setup"装上去怎么没反映?还有我在"um0424"上没有找到"Software Driver"文件夹,当然也没有inf文件.大家帮帮忙啊,  …

查看全部问答>

STM32 USB HID实现USB双向通信

STM32 和USB HID实现USB双向通信有什么作用??…

查看全部问答>

产生pwm 占空比可变 请问程序下进去没反映啊

#include #define uint unsigned int #define uchar unsigned char #define keyin    (P1IN & 0x0F) void delay(void); void main(void) {     uchar temp= 0;     uint PWM_T = 1000;   //占空 ...…

查看全部问答>

求助关于USB Host的问题

我现在手里有一个读卡器设备,作为USB Device。采用了CDC模式通信。现在我要用LM3S9B96作为USB Host,读取数据并通过网络上传到服务器。 以前没弄过USB Host相关的东西,请问这种情况下,我USB Host应该是工作在什么模式下?如果Device采用了CDC的 ...…

查看全部问答>