历史上的今天
返回首页

历史上的今天

今天是:2024年11月13日(星期三)

正在发生

2019年11月13日 | STM8L051F3_01_GPIO应用

2019-11-13 来源:eefocus

本章介绍STM8L051F3的GPIO相关知识。内容分为以下几部分:


GPIO简介

点亮LED

1、GPIO简介


GPIO:通用输入/输出口,用于芯片与外部进行数据传输;STM8L051F3的一个I/O端口最多可以有8个Pins(引脚),每个引脚可以独立地配置为数字输入或数字输出。此外,一些I/O端口可能有一些复用功能如模拟输入、外部中断、片上外设的输入输出等,一个引脚不能同时使用多种复用功能。


每个I/O端口都分配有一个输出数据寄存器、输入数据寄存器、数据方向寄存器、两个配置寄存器,一个I/O端口工作在输入或输出状态取决于数据方向寄存器。STM8L051F3的GPIO主要性能如下:


端口的位(引脚)能独立配置

可选择的输入模式:浮空输入或上拉模式

可选择的输出模式:推挽输出或伪开漏输出

独立的数据输出和输出寄存器

外部中断能独立地使能或禁能

可控的输出速率能减少EMC噪声

可用于片上外设复用功能的I/O

在数据输出锁存上可实现数据读出--修改--写入

I/O状态在1.6V~VDDIOmax下是稳定的

GPIO的输入输出模式主要分为以下几种:


浮空输入(初始状态由外部决定)

上拉输入(初始状态为VDD)

开漏输出(输出高由外部控制,输出低为VSS)

推挽输出(输出高为VDD,输出低为VSS)

为了降低功耗,没有使用的I/O口的引脚应配置为以下功能之一:


通过外部上拉或下拉,作为浮空输入

配置为内部上拉/下拉输入

配置为推挽输出,输出低

STM8L51F3的GPIO板块框图如下:


注:在3.6V和5V兼容的I/O口,连接到VDD的保护二极管是不起作用的


在真正开漏的I/O口,P-Buffer、弱上拉和连接到VDD的保护二极管是不起作用的


2、点亮LED


2.1 GPIO的输出配置


本小节介绍将GPIO配置为输出模式实现点亮LED1。使用的例程:STM8L051F3_01_LED。实现的步骤如下:

1)初始化LED1(PB1)为推挽输出模式(初始电平高)


2.2 例程介绍


 1LED1&LED2的初始化在led.c文件中定义:

 2void LED_Init(void)

 3{

 4  /* 配置LED1 IO口为输出模式 ,初始状态为高*/

 5  GPIO_Init(LED1_GPIO_PORT, LED1_GPIO_PINS, GPIO_Mode_Out_PP_High_Fast);

 6  /* 配置LED2 IO口为输出模式 ,初始状态为高*/

 7  GPIO_Init(LED2_GPIO_PORT, LED2_GPIO_PINS, GPIO_Mode_Out_PP_High_Fast);

 8}

 9LED1&LED2的端口在led.h文件中定义:

10#define LED1_GPIO_PORT  (GPIOB)

11#define LED1_GPIO_PINS  (GPIO_Pin_1)

12#define LED2_GPIO_PORT  (GPIOB)

13#define LED2_GPIO_PINS  (GPIO_Pin_2)

 


在主函数中,LED_Init()函数对GPIO进行初始化,然后在循环中每300ms改变一次LED1的状态:


1void main(void)

2{

3  LED_Init();   //初始化LED

4while(1)

5{

6    delay_ms(300);

7    GPIO_ToggleBits(LED1_GPIO_PORT, LED1_GPIO_PINS); //切换LED1状态

8}

9}

Delay_ms()函数在main.c文件中定义并实现:



1static void delay_ms(unsigned int ms)//延迟函数,MS级别

2{

3  unsigned int x,y;

4for(x = ms;x>0;x--)

5{

6for(y = 405;y>0;y--);

7}

8}


使用ST-LINK把程序下载到开发板中,然后可以看到LED1闪烁。注:例程中系统时钟使用的是默认HSI/8 = 2MHz。

推荐阅读

史海拾趣

DETCO公司的发展小趣事

当5G技术开始在全球范围内推广时,ElectronicsCorp看到了巨大的商机。公司迅速调整战略,将重点转向5G相关产品的研发。通过与全球领先的通信公司合作,ElectronicsCorp推出了一系列5G手机和通信设备。这些产品不仅性能卓越,而且价格合理,赢得了消费者的青睐。随着5G技术的普及,ElectronicsCorp的市场份额不断扩大。

3M公司的发展小趣事

在电子产品行业日益关注环保和可持续发展的背景下,ElectronicsCorp采取了一系列积极措施。公司开始使用环保材料制造产品,并优化生产流程以减少能源消耗和废物排放。此外,ElectronicsCorp还推出了一系列回收计划,鼓励消费者将旧电子产品回收再利用。这些措施不仅提高了公司的环保形象,还增强了消费者对公司品牌的忠诚度。

ETL semiconductor公司的发展小趣事

英特尔(Intel)的成立与发展与微处理器的发明密不可分。在20世纪70年代初,英特尔的工程师们开始研发一种能够将计算机的中央处理器(CPU)集成到单一芯片上的技术。经过数年的努力,他们成功推出了世界上第一款微处理器——Intel 4004。这一创新不仅改变了计算机行业,也为英特尔的崛起奠定了坚实基础。

Brilliance公司的发展小趣事

在国内市场取得一定成功后,Brilliance公司开始将目光投向国际市场。公司制定了详细的国际化战略,积极寻求与国际知名企业的合作机会。通过与国外合作伙伴的共同努力,Brilliance的产品逐渐打入国际市场,并获得了良好的口碑。同时,公司还积极参加国际电子展会和交流活动,提升了品牌知名度和影响力。

Amaze Electronics Pte Ltd公司的发展小趣事

在激烈的市场竞争中,品牌建设成为Amaze Electronics提升市场影响力的关键。公司注重品牌形象的塑造,通过举办各类活动、参与行业展会等方式,提高品牌知名度和美誉度。同时,公司还注重产品质量的把控,确保每一件产品都能体现公司的专业水准和品质追求。这些举措有效提升了Amaze Electronics在市场上的影响力,吸引了更多客户的关注和信赖。

台湾凌通(Generalplus)公司的发展小趣事
根据电路设计和安装要求,选择合适封装形式的光敏元件,如贴片式、插件式等。

问答坊 | AI 解惑

利用运算放大器实现的混频器

混频器常常用一个二极管桥式电路(diodebridge)或一个Gilbert单元(Gilbertcell)来实现。这两类混频器都使用了一个本地振荡器(LO)来跳转射频输入的极性。   当LO为正时,RF输入被混频转换为中频(IF)输出时极性不改变。当LO为负时,RF输入转换为IF时极 ...…

查看全部问答>

关于TAPI的lineInitializeEx的困惑

Windows Embedded CE 6.0帮助文档中介绍,Establishing a Modem Connection的流程如下: lineInitializeEx      ↓ lineOpen      ↓ lineMakeCall      ↓ lineGetMessage & ...…

查看全部问答>

subproject的问题

用windows ce 的template建了个pda的os project 想在这个project下面加一个 subproject 来播放一个 test16bit.wav的文件 这个文件 我是从project property的custom build actions里面加入目录relase的 这个subproject我是这么写的 #include # ...…

查看全部问答>

虚拟网卡动态修改mac

    本人目前维护一个虚拟网卡的微端口驱动程序,代码已经由别人完成,且已经商品化,公司要求我增加一项功能,功能是驱动能够动态的修改虚拟网卡的mac地址。      虚拟网卡mac地址的初始化是通过读一个TXT文件,然 ...…

查看全部问答>

串口输出 程序调试

#include #include void main() { int i=7,j=2; float f=(float)i/j; SCON = 0x50; TMOD |= 0x20; TH1 = 0xf3; TR1 = 1; TI = 1; printf(\"%f\",f); while(1) {} } 这个程序为什么在运行的时候 在串口输入串口 没看到东西啊 ...…

查看全部问答>

一个让人纠结的结果

最近玩单片机的时候谢了一个小代码,但是实在不知道出错在哪里。代码如下         ORG 0000H         ;程序从000H地址开始运行         LJMP        ...…

查看全部问答>

求教!新手求指点

若我有一台17KW  600V的无刷电机,控制器的驱动部分因该选用哪种IGBT和驱动芯片呀,求个型号以供参考,谢谢了…

查看全部问答>

LPCXpresso-CN在IAR下怎么开发,选什么仿真器啊

驱动应该装好了,用lpcxpresso IDE开发无能 板子后面写了IAR,应该可以用IAR来开发 导入了一个IAR里自带的LPC1114的例程 编绎有一警告,无错误 仿真器选择那个呢,我一个个试好像都不行啊, 是不是有其他的选项要设置…

查看全部问答>

Z-Stack中SimpleApp开关结点加入网络流程

(1)开关结点初始化    这时选择的节点类型是终端节点,所以使用f8wEndev.cfg文件,所以在Zglobals.h文件中,我们可以得到下面的定义#define ZG_DEVICETYPE_ENDDEVICE        0x02#define DEVICE_LO ...…

查看全部问答>