打印

【连载】STM8L051F3_01_GPIO应用

[复制链接]
1469|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caijie001|  楼主 | 2018-5-6 21:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 caijie001 于 2018-5-24 17:58 编辑

本章介绍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、点亮LED2.1 GPIO的输出配置本小节介绍将GPIO配置为输出模式实现点亮LED1。使用的例程:STM8L051F3_01_LED。实现的步骤如下:
1)初始化LED1(PB1)为推挽输出模式(初始电平高)
2.2 例程介绍LED1&LED2的初始化在led.c文件中定义:
void LED_Init(void)
{
  /* 配置LED1 IO口为输出模式 ,初始状态为高*/
  GPIO_Init(LED1_GPIO_PORT, LED1_GPIO_PINS, GPIO_Mode_Out_PP_High_Fast);
  /* 配置LED2 IO口为输出模式 ,初始状态为高*/
  GPIO_Init(LED2_GPIO_PORT, LED2_GPIO_PINS, GPIO_Mode_Out_PP_High_Fast);
}
LED1&LED2的端口在led.h文件中定义:
#define LED1_GPIO_PORT  (GPIOB)
#define LED1_GPIO_PINS  (GPIO_Pin_1)
#define LED2_GPIO_PORT  (GPIOB)
#define LED2_GPIO_PINS  (GPIO_Pin_2)
在主函数中,LED_Init()函数对GPIO进行初始化,然后在循环中每300ms改变一次LED1的状态:
void main(void)
{
  LED_Init();   //初始化LED
while(1)
{
    delay_ms(300);
    GPIO_ToggleBits(LED1_GPIO_PORT, LED1_GPIO_PINS); //切换LED1状态
}
}
Delay_ms()函数在main.c文件中定义并实现:
static void delay_ms(unsigned int ms)//延迟函数,MS级别
{
  unsigned int x,y;
for(x = ms;x>0;x--)
{
for(y = 405;y>0;y--);
}
}
使用ST-LINK把程序下载到开发板中,然后可以看到LED1闪烁。注:例程中系统时钟使用的是默认HSI/8 = 2MHz。

往期精彩回顾
STM8L051F3_0b_开发环境搭建
https://bbs.21ic.com/icview-2506990-1-1.html?fromuser=caijie001
(出处: 21ic电子技术论坛)
【连载】STM8L051F3_0d_基础介绍
https://bbs.21ic.com/icview-2506992-1-1.html?fromuser=caijie001

(出处: 21ic电子技术论坛)

简析stm32启动过程
https://bbs.21ic.com/icview-2505854-1-1.html?fromuser=caijie001
(出处: 21ic电子技术论坛)




相关帖子

沙发
dongnanxibei| | 2018-5-9 10:26 | 只看该作者
L系列的GPIO操作跟其他系列的是通用的吧。

使用特权

评论回复
板凳
xuanhuanzi| | 2018-5-9 11:42 | 只看该作者
以前觉得这种不好用,后来用惯了,发现比51好用多了。

使用特权

评论回复
地板
tianqi911| | 2018-10-23 11:08 | 只看该作者
能不能写点1T51方面IO口的东西呀,你写的比较高级。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:21ic公开课专区:http://open.21ic.com/ 21ic资料下载中心:http://dl.21ic.com/ 21ic项目外包中心:http://project.21ic.com/ 杰杰欢迎大家有空常来赛事专区逛逛

131

主题

3790

帖子

63

粉丝