新疆喜乐彩玩法

STM8S IO口基本输入输出

2019-11-26来源: eefocus关键字:STM8S  IO口  基本输入输出

新疆喜乐彩玩法GPIO主要功能 

● 端口的各个位可以被单独配置 

● 可选择的输入模式:浮动输入和带上拉输入 

● 可选择的输出模式:推挽式输出和开漏输出 

● 数据输入和输出采用独立的寄存器 

新疆喜乐彩玩法● 外部中断可以单独使能和关闭 

● 输出摆率控制用以减少EMC噪声 

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

● 当作为模拟输入时可以关闭输入施密特触发器来降低功耗 

● 在数据输出锁存时支持读-修改-写 

● 输入兼容 5V电压 

● I/O口工作电压范围为1。6 V 到VDDIOmax


STM8S的IO口相关的寄存器 

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

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 

新疆喜乐彩玩法Px_ODR ODR7 ODR6 ODR5 ODR4 ODR3 ODR2 ODR1 ODR0 

读/写 R/w R/w R/w R/w R/w R/w R/w R/w 

复位 0 0 0 0 0 0 0 0 

Px_ODR中的x代表A、B、C、D、E等端口(下同),这个寄存器所有的位都是一样的,要输出数据的时候把数据往这个寄存器里面放就得了。


一、端口 x 输入寄存器 (Px_IDR) 

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 

Px_IDR IDR7 IDR6 IDR5 IDR4 IDR3 IDR2 IDR1 IDR0 

读/写 R R R R R R R R 

复位 —— —— —— —— —— —— —— —— 

无论是输入还是输出模式,都可以通过这个寄存器读取IO电平, 

新疆喜乐彩玩法0=低电平; 

1=高电平;


二、端口 x 数据方向 (Px_DDR) 

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 

Px_DDR DDR7 DDR6 DDR5 DDR4 DDR3 DDR2 DDR1 DDR0 

读/写 R/W R/W R/W R/W R/W R/W R/W R/W 

复位 0 0 0 0 0 0 0 0 

IO口方向操作 

0=输入模式; 

1=输出模式;


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

注意: 初始复位时,所有引脚设置为浮空输入。 

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 

Px_CR1 C17 C16 C15 C14 C13 C12 C11 C10 

新疆喜乐彩玩法读/写 R/W R/W R/W R/W R/W R/W R/W R/W 

复位 0 0 0 0 0 0 0 0 

这个寄存器在输入输出不同模式下有不同的功能 

在 输入模式时(DDR=0): 

0:浮空输入 

1::带上拉电阻输入 

在 输出模式时(DDR=1): 

新疆喜乐彩玩法0:模拟开漏输出(不是真正的开漏输出) 

1: 推挽输出, 由CR2相应的位做输出摆率控制


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


Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 

PxCR2 C27 C26 C25 C24 C23 C22 C21 C20 

读/写 R/W R/W R/W R/W R/W R/W R/W R/W 

复位 —— —— —— —— —— —— —— ——

这个寄存器在输入输出不同模式下有不同的功能 

在 输入模式时(DDR=0): 

0: 禁止外部中断 

1: 使能外部中断 

在 输出模式时(DDR=1): 

新疆喜乐彩玩法0:输出速度最大为2MHZ。 

1:输出速度最大为10MHZ


 ```

例;

IO输出,PE5输出高低电平

/*这个工程模板是别人的,并不是按照官方的标准模板,

这个头文件型号不影响编程*/

#include  


#define LED_On      PE_ODR |=  1<<5      //PE5输出1,低电平有效

#define LED_Off     PE_ODR &= ~(1<<5)    //PE5输出0


void delay(unsigned int ms);

void InitLED(void);


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

int main(void)

{


  CLK_CKDIVR = 0x00;      /*内部时钟为1分频 = 16Mhz,

                          每个工程都要初始化时钟*/

  InitLED();              //调用LED初始化函数

  while(1)

  {

     LED_On;

     delay(100);         //空跑大概延时


     LED_Off;

     delay(100);          //空跑大概延时

  }

}


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

//这只是概大延时,时间并不精准

void delay(unsigned int ms)

{

  unsigned int x , y;

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

    for(y = 3000 ; y > 0 ; y--);

}


void InitLED()

{

    PE_DDR |= 1<<5;//PE5方向为输出

    PE_CR1 |= 1<<5;//PE5为推挽输出

    PE_CR2 |= 1<<5;//最大输出速度为10M

    PE_ODR |= 1<<5;//PE5输出1

}



----------



例;PE5的LED状态翻转

/*这个工程模板是别人的,并不是按照官方的标准模板,

新疆喜乐彩玩法这个头文件型号不影响编程*/

#include  


#define LED_Reverse      PE_ODR ^=1 <<5     //PE5输出状态翻转


void delay(unsigned int ms);

void InitLED(void);


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

int main(void)

{

  CLK_CKDIVR = 0x00;      /*内部时钟为1分频 = 16Mhz,

                          每个工程都要初始化时钟*/

  InitLED();              //调用LED初始化函数

新疆喜乐彩玩法  while(1)

  {

     LED_Reverse;

     delay(100);         //空跑大概延时

  }

}


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

新疆喜乐彩玩法//这只是概大延时,时间并不精准

void delay(unsigned int ms)

{

  unsigned int x , y;

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

    for(y = 3000 ; y > 0 ; y--);

}


void InitLED()

{

    PE_DDR |= 1<<5;//PE5方向为输出

    PE_CR1 |= 1<<5;//PE5为推挽输出

    PE_CR2 |= 1<<5;//最大输出速度为10M

    PE_ODR |= 1<<5;//PE5输出1

}



----------

新疆喜乐彩玩法例;PC1按键输入,触发PE5的LED状态翻转

/*这个工程模板是别人的,并不是按照官方的标准模板

这个头文件型号不影响编程*/

#include  


#define LED_Reverse   PE_ODR ^=1 <<5  //PE5输出状态翻转


void InitLED(void);

void InitKey(void);


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

int main(void)

{

  CLK_CKDIVR = 0x00; //内部时钟为1分频 = 16Mhz,每个工程都要初始化时钟

  InitLED();             //调用LED初始化函数

  InitKey();             //初始化按键输入

  while(1)

  {

    if((PC_IDR&0x02)==0)//PC1是上拉输入,当把PC1短接到gnd后

                        //LED状态会翻转,这里并没有消抖

       LED_Reverse;

  }

}

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

//子函数

void InitLED()

{

    PE_DDR |= 1<<5;//PE5方向为输出

    PE_CR1 |= 1<<5;//PE5为推挽输出

    PE_CR2 |= 1<<5;//最大输出速度为10M

    PE_ODR |= 1<<5;//PE5输出1

}

void InitKey(void)

{

  PC_DDR &= ~(1<<1);//PC1方向为输入

  PC_CR1 |= 1<<1;   //PC1上拉输入

  PC_CR2 &= ~(1<<1);//PC1不使能中断

}

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

上一篇:STM8S103之串口中断接收
下一篇:最后一页

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

推荐阅读

STM8S硬件IIC卡在判忙,注意事项
下面是关键,下面这样设置IO可正常使用硬件IICGPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_OD_HIZ_SLOW); //IIC,OD outPutGPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_OD_HIZ_SLOW); //IIC,OD outPut//或者GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_OD_HIZ_FAST); //IIC,OD outPutGPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_OD_HIZ_FAST); //IIC,OD outPut下面这样
发表于 2019-11-22
STM8S汇编入门(1-3)
的,一直躺在那里,与其躺在那里,不如拿出来玩玩。这几年,ST在国内推广STM32,力度不小,不过我一直没有用过,只是初步地看看资料。原因在于在32位单片机方面,我一直在用Luminary公司的LM3S1138,感觉不错,一直都很顺利。09年ST举办的研讨会上,ST除了介绍STM32外,也介绍了STM8,当时听了以后,觉得还行。尤其是会上的低功耗演示给我留下了很深刻的印象。基于这些,我决定好好地玩一下STM8芯片,并将玩的结果拿出来与大家共享。STM8与汇编语言(2)第一次打开STM8的手册时发现,CPU中的寄存器只有6个,即A、X、Y、SP、PC和CC。这几个寄存器,看上去特象早年苹果机使用的微处理器6502。在眼下都是多寄存器的RISC
发表于 2019-11-22
STM8S103-STVD建立汇编代码项目
求选择其它的。一般是选这个。  4. 填写工作空间的名称和所在的路径。  5. 填写项目的名称和选择项目路径,下面的toolchain选择ST Assembler Linker(建汇编工程是选这个,如果是C语言的可以选其它的)。  6. 选择MCU(单片机)的型号,我通过最上方搜索的方式来快速找到,也可以直接一个一个找。我选择的是STM8S105C6,选择后点OK。  7. 这样子,基本的目录结构STVD就为我们生成好了。我们可以基于这个来编写自己的程序。 
发表于 2019-11-22
STM8S103-STVD建立汇编代码项目
STM8S103之tim2PWM输出
一、简介本文以STM8S103F3P6编程为例,介绍STM8S103F3P6定时器2输出PWM。二、实验平台电脑平台:Windows7 64位旗舰编译软件:IAR硬件平台:STM8S103F3P6四、实验前提1、在进行本文步骤前,请先安装IAR  EWSTM8-EV-1311版本;准备好STM8S103F3P6硬件平台。      五、基础知识暂无六、源码地址暂无七、关联文章链接:http://blog.csdn.net/qq_18842031/article/details/77104097八、实验内容1.系统时钟初始化为内部16MCLK_HSIPrescalerConfig
发表于 2019-11-21
STM8S103之tim2PWM输出
stm8s103调试注意点
外设时钟的配置,有次ADC就是不工作,查问题查了很久,总是怀疑ADC配置问题,然后利用库函数的例程,发现就可以,最后发现,外设时钟没开启,外设时钟如下配置CLK->PCKENR1 = 0x00;CLK->PCKENR2 = 0x00;导致ADC不工作。查ADC不工作问题时,为什么会怀疑配置有问题呢,主要原因也是由于debug时,查看ADC寄存器发现跟期望值不符,ADC寄存器的值大部分为0,查看datasheet这些寄存器均是可读写的,按道理应该可以观察的到,但是就是不行,,最后打开外设时钟后,发现观察ADC寄存器跟期望一致了。总结:外设时钟没开,ADC寄存器观察期望不符;外设时钟开了,ADC寄存器和期望相符。ADC不断进
发表于 2019-11-21
新疆喜乐彩玩法STM8S103系列IO口模拟串口通信(实现真正串口)
STM8s103f3p3单片机只有一个串口,有时候在实际项目中,我们需要用到多个串口来实现项目要求,此时,我们可以通过IO口来模拟串口通信,在实现项目需求的同时,还大大降低了成本。实验原理默认串口空闲状态为高电平,开始位为0,然后发送8个数据位,然后是奇偶校验位,停止位为高电平。数字电路中只有0、1两种状态,这是我们用IO口可以实现的,我们认为高电平是1,低电平是0。也就是说我们用只到了IO口的输出功能(对于实现TX功能的IO口而言),那么到底发多长时间的高电平呢?这是由TIMx定时器决定的,TIMx定时器通过计数器实现。这个时间取决于什么呢?取决于波特率。也就是说,只要我们初始化设置好了TIMx定时器我们就不需要考虑时间问题
发表于 2019-11-21
STM8S103系列IO口模拟串口通信(实现真正串口)
小广播
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD。com。cn, Inc。 All rights reserved
智慧彩票投注开户 北京赛车pk10玩法 上海11选5 北京两步彩 北京赛车pk10玩法 北京赛车怎么玩 山东群英会购买平台 江西11选5 新疆喜乐彩玩法北京赛车pk10赔率最高的平台 北京赛车怎么玩