STM8L051F3_01_GPIO应用

2019-11-13来源: eefocus关键字:STM8L051F3  GPIO  数据传输

本章介绍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。

关键字:STM8L051F3  GPIO  数据传输 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479846.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8S的HALT模式与AWU唤醒
下一篇:PCF8563 时钟芯片驱动程序 (STM8S/STM8L)

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8L051F3 硬件I2C从机实例
这篇文章是以相对新手的水平去写给新手参考的,所以我会尽量写的详细点。1.首先我们需要查看数据手册,看下硬件I2C的接口是哪个端口,我用的是STM8L051F3这一块芯片。这款芯片的I2C应该是不能复用别的端口的,反正手册我没查到,只能用C0跟C1。2.接下来开始初始化I2C需要的设置。(这里我只讲7位地址的。)void I2C_Init(void){  CLK_PeripheralClockConfig(CLK_Peripheral_I2C1, ENABLE); //初始化I2C时钟  CLK->SWR=CLK_ICKCR_HSION;//时钟选择为HSI  CLK->CKDIVR
发表于 2019-11-25
STM8L051F3 硬件I2C从机实例
基于STM32F103循迹小车
本人小白一个,利用暑假时间在家做一些小东西。我这次想要跟大家分享的是基于STM32F103的循迹小车的制作。(两个轮子)主要硬件:板子、L298N、电机、4个循迹模块等话不多说,先上干货。XJ.c#include "XJ.h"//循迹文件#include "stm32f10x.h"void XJ_Init(void){        GPIO_InitTypeDef GPIO_InitStructure;    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); 
发表于 2019-08-20
基于STM32L151//STM32F407的矩阵键盘程序(不规则接口)
最近在做一个有关按键的项目,需要用到矩阵键盘,上网找了很多都是基于一些规则接口的程序,感觉无语,因为画PCB由于布线原因不太可能矩阵键盘的几条线是连接连续的GPIO口,所以经过我自己思考,做出了自己基于STM32的不规则程序,由于每种矩阵键盘的连接原理有时是不同,所以首先先讲明我的矩阵键盘的连接原理4条行线初始化时全为1,列线全为0,由于我的列先有接10K的电阻,有按键按下时,被按下的列线为1,行线一次置为1、0、0、0,1,0,0�,0,1,0�,0,0,1基于STM32L151//STM32F407的矩阵键盘程序(不规则接口):行接口:PA8,PA12,PB3,PB4列接口:PA11,PB5,PB9void KeyPress
发表于 2019-04-08
基于STM32L151//STM32F407的矩阵键盘程序(不规则接口)
STM32F030C6+nrf24l01 SPI配置
void SPI1_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef  SPI1_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); //PB13:SCK PB14:MISO PB15:MOSI GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStr
发表于 2019-02-15
STM8L101F3P-串口发送功能初始化
1.串口初始化函数CLK_MasterPrescalerConfig(CLK_MasterPrescaler_HSIDiv1);GPIO_ExternalPullUpConfig(GPIOC,GPIO_Pin_3|GPIO_Pin_4, ENABLE);CLK_PeripheralClockConfig(CLK_Peripheral_USART, ENABLE);USART_DeInit();USART_Init(9600, USART_WordLength_8D, USART_StopBits_1, USART_Parity_No,USART_Mode_Tx);2.发送一个uint8_t类型的数据USART_SendData8(
发表于 2018-10-08
STM8L学习笔记-GPIO端口操作(一)
STM8与STM32一样提供了固件库函数,不过没有STM32的库完善,给的说明文档是chm格式的,名字是stm8l15x_stdperiph_lib_um.chm,这个官网有下载. GPIO寄存器有: 输出寄存器(ODR), 输入寄存器(IDR), 方向寄存器(DDR), 控制寄存器1(CR1), 控制寄存器2(CR2); 后面三个寄存器组和可以配置为8种GPIO的模式. 而固件库函数给出了8种模式,在上面的基础上加入了输出高/输出低电平的状态。GPIO_Mode_In_FL_No_IT浮空输入无中断 GPIO
发表于 2019-12-11
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved