历史上的今天
返回首页

历史上的今天

今天是:2024年09月07日(星期六)

2021年09月07日 | STM8S之GPIO自学笔记

2021-09-07 来源:eefocus

STM8S105C6T6 48个引脚 32KB Flash  封装:LQFP  temp:-40~85

PA1~PA6,PB0~PB7,PC1~PC7,PD0~PD7,PE0~PE3,PE5~PE7,PG0,PG1,

一共38个通用I/O口。


GPIO寄存器

端口x输出数据寄存器(Px_ODR);

端口x输入数据寄存器(Px_IDR);

端口x输出数据方向(Px_DDR);0:输入模式 1:输出模式;

端口x控制寄存器1(Px_CR1);

当DDR=1;置0 模拟开漏输出;置1 推挽输出;(CR2位做输出摆率控制);

当DDR=0;置0 浮空输入;置1 上拉输入;

端口x控制寄存器2(Px_CR2);

当DDR=0;置0 禁止外部中断;置1 使能外部中断;

当DDR=1;置0 speed 2MHz;置1 speed 10MHz;

相应GPIO库函数

void GPIO_DeInit(GPIO_TypeDef* GPIOx);

用于恢复指定端口的寄存器到默认值,0x00;无中断的功能浮空输入。

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode);

GPIO初始化,配置指定端口功能

GPIO_Pin:

GPIO_PIN_0 ~GPIO_PIN_7;
GPIO_PIN_HNIB;//高四位引脚

GPIO_PIN_LNIB;//低四位引脚

GPIO_PIN_ALL  ;//所有引脚

GPIO_Mode:输入输出模式设置;

void GPIO_Write(GPIO_TypeDef* GPIOx, u8 PortVal);

写值到相应GPIO输出。

void GPIO_WriteHigh(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);

置位指定端口的一个或多个引脚,并输出高电平,前提是该端口配置为输出模式。

void GPIO_WriteLow(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);

置位指定端口的一个或多个引脚,并输出低电平,前提是该端口配置为输出模式。

void GPIO_WriteReverse(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);

取反指定端口的一个或多个引脚的电平状态,并输出,前提是该端口配置为输出模式。

u8 GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

读取指定端口数据,返回一个8位无符号值。前提该端口配置为输入模式。

u8 GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);

读取指定端口输出寄存器的值,返回一个8位无符号值。

BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin);

读取指定端口一个或多个引脚的状态,任意一个引脚为高电平则返回SET,否则返回RESET。

void GPIO_ExternalPullUpConfig(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, FunctionalState NewState);

使能或禁止内部上拉电阻的引脚。

STM8S系列可以采用库函数或直接操作寄存器进行编程,

库函数版本的GPIO点亮LED(IAR FOR STM8S)

#include "stm8s.h"
#define uint unsigned int
void Delay(uint xms)
{
  uint i,j;
  for(i=xms;i>0;i--)
   for(j=220;j>0;j--);
}


void main()
{
  
   GPIO_Init( GPIOD,GPIO_PIN_0,GPIO_MODE_OUT_PP_HIGH_FAST);

  GPIO_WriteHigh(GPIOD,GPIO_PIN_0);
   Delay(500);
  GPIO_WriteLow(GPIOD,GPIO_PIN_0);
   Delay(500);
   while(1);
 

}


void assert_failed(u8* file, u32 line)
 {
   while (1)
   {
   }
 }

推荐阅读

史海拾趣

Corporation Soneet公司的发展小趣事

随着Soneet在技术领域取得的成功,公司开始积极拓展市场。Soneet与多家知名电子设备制造商建立了战略合作关系,共同开发新产品。通过与这些合作伙伴的紧密合作,Soneet的产品得以迅速进入全球市场,进一步提升了公司的知名度和影响力。

ANYSOLAR LTD.公司的发展小趣事

ANYSOLAR LTD.的创立源于一次技术突破。创始人李明,一位资深的电子工程师,在一次实验中意外发现了一种新型光伏材料的制备方法。这种材料具有高效的光电转换效率,且成本远低于市场上的同类产品。李明意识到这是一个巨大的商业机会,于是决定辞去工作,创立ANYSOLAR LTD.,专注于这种新型光伏材料的研发和生产。

初创期的ANYSOLAR面临着资金短缺、人才匮乏和市场认可度低等多重挑战。然而,李明凭借对技术的深厚理解和不懈追求,带领团队攻克了一个又一个技术难题,逐步将产品推向市场。通过参加行业展会、与潜在客户建立联系等方式,ANYSOLAR逐渐赢得了市场的认可。

Codeco Corporation Of Vermont公司的发展小趣事

在国内市场取得成功后,Codeco开始将目光投向国际市场。他们积极拓展海外业务,与多家国际知名企业建立合作关系。通过参加国际展会、设立海外分支机构等方式,Codeco的产品逐渐打入国际市场,赢得了广泛的认可。这一过程中,Codeco不仅提升了品牌知名度,也积累了丰富的国际化运营经验。

ABI Electronics公司的发展小趣事

为了进一步拓展业务,ABI Electronics公司开始积极寻求全球市场的布局。通过与各地的电子分销商、代理商建立合作关系,ABI的产品逐渐进入了全球各地的市场。同时,ABI还积极参加各类国际电子展会,展示其最新技术和产品,与全球同行建立了广泛的联系和合作。

HALO Electronics公司的发展小趣事

为了进一步拓展业务,ABI Electronics公司开始积极寻求全球市场的布局。通过与各地的电子分销商、代理商建立合作关系,ABI的产品逐渐进入了全球各地的市场。同时,ABI还积极参加各类国际电子展会,展示其最新技术和产品,与全球同行建立了广泛的联系和合作。

Global Communications公司的发展小趣事
温度传感器的输出与温度之间的线性关系可能不理想,导致补偿效果不准确。此时,可以采用非线性补偿技术或选择具有更好线性度的温度传感器来解决问题。

问答坊 | AI 解惑

超低功耗27-MHz无线鼠标参考设计

超低功耗27-MHz无线鼠标参考设计…

查看全部问答>

一个特殊干扰的排除过程

BY 安防社区 水木金钟 有一学校,四年前安装了一套视频监控系统(PC式DVR),只有4路(只监控大门,二进二出),现在由我们公司升级到20路。     我们把所有的系统都做好后,发现有非常弱的干扰信号,不到200米的几个摄像机,在传输中 ...…

查看全部问答>

CE下字符串写入文件出错,怎么办那?

我在CE下要向文件里写一些字符串。可是写入的时候出错,我以前用这代码在WIN32下好使的。请问怎么办 CStdioFile* pFile = new CStdioFile(FileName,CFile::modeWrite|CFile::modeCreate); CString code; code.Format(L\"P0%d  X%f, Y% ...…

查看全部问答>

vs2005 mfc 基于智能设备的程序 如何在按钮上显示位图

里面不能用setbitmap()大家都用什么方法 阿 …

查看全部问答>

在线调试问题!

用过万隆的开发板的兄弟们,在线调试能行吗?交流一下!…

查看全部问答>

怎样实现 防拆卸功能????

有个小仪器,需要实现防拆卸功能,非法拆卸就报警。 机械设计需要另外开模具,花费有点大,不知道还有什么方法能实现? …

查看全部问答>

耦合电感拓展DC/DC 转换器的应用

     尽管对于能够对高低输入电压之间的输出电压(例如:未经调节的墙上 12V 电源)进行调节的转换器需求一直都存在,而且 DC/DC 单端初级电感转换器(SEPIC) 拓扑也不是什么新东西,但的确直到最近它才开始流行起来。   ...…

查看全部问答>

关于realView MDK资料整理。收藏版

关于realView MDK资料整理。收藏版…

查看全部问答>

数码管显示问题

各位大侠,请问我用定时中断去显示数码管,0-60,为什么数码管总会有个二极管不亮的? 图:数码管应该显示02的!可是总缺失一个部位! 有高手可以帮忙么? 谢谢! 代码如下: #include #define uint unsigned int #define uchar unsigned ch ...…

查看全部问答>

开关电源的啸叫~

用的是TPS63020,电感是XFL4020-152 1.5uH 上电后出现刺耳的啸叫........= =;;;...而且烫死了..我就给立马断开了,,,用的EN引脚做开关 LAYOUT也是按照官方的来的....,,哪地方可能出问题了呢...........纠结..…

查看全部问答>