引脚类型
寄存器
STM8S208MB寄存器采用LQFP80封装,此处的80就表示都会 有80个引脚,其中68个引脚是GPIO。按 GPIO 端口功能分类,依次是
PA 组GPIO端口有6个(PA1-PA6)
PB 组GPIO端口有8个(PB0-PB7)
PC 组GPIO端口有8个(PC0-PC7)
PD 组GPIO端口有8个(PD0-PD7)
PE 组GPIO端口有8个(PE0-PE7)
PF 组GPIO端口有6个(PF0,PF3-PF7)
PG 组GPIO端口有8个(PG0-PG7)
PH 组GPIO端口有8个(PH0-PH7)
PI 组GPIO端口有8个(PI0-PI7)
STM8S208MB 每一个端口寄存器位驱动相应的端口引脚。
每一个端口有 5 个寄存器
1.数据方向寄存器(DDR)
2.输出数据寄存器(ODR)
3.引脚输入寄存器(IDR)
4.控制寄存器(CR1)
5.控制寄存器(CR2)
用于对输入/输出进行配置。任何一个 I/O 引脚可以通过对 DDR,ODR,IDR,CR1 和 CR2 寄存器的相应位进行编程来配置。
端口 x 数据方向(Px_DDR)
DDR[7:0]:数据方向寄存器
这些可以通过软件置 1 或者置 0,选择引脚输入或者输出
0:输入模式
1:输出模式
端口 x 输出数据寄存器(Px_ODR)
ODR[7:0]:端口输出数据寄存器
在输出模式下,写入寄存器的数值通过锁存器加到相应的引脚上。读 ODR 寄存器,返回之前锁存的寄存器值。
在输入模式下,写入 ODR 的值将被锁存到寄存器中,但不会改变引脚状态。ODR 寄存器在复位后总是为 0。位操作指令(BSET, BRST) 可以用来设置 DR 寄存器来驱动相应的引脚,但不会影响到其他引脚。
端口 x 输入数据寄存器(Px_IDR)
IDR[7:0]:端口输入数据寄存器
不论引脚是输入还是输出模式,都可以通过该寄存器读入引脚状态值。该寄存器为只读寄存器。
0:逻辑低电平
1:逻辑高电平
端口 x 控制寄存器(Px_CR1)
C1[7:0]:控制寄存器位
这些位可通过软件置 1 或置 0,用来在输入或输出模式下选择不同的功能。在输入模式时(DDR=0):
0:浮空输入
1:带上拉电阻输入
在 输出模式时(DDR=1):
0:模拟开漏输出(不是真正的开漏输出)
1:推挽输出, 由 CR2 相应的位做输出摆率控制
端口 x 控制寄存器(Px_CR2)
C2[7:0]:控制寄存器位
相应的位通过软件置 1 或置 0,用来在输入或输出模式下选择不同的功能。在输入模式下,由 CR2 相应的位使能中断。如果该引脚无中断功能,则对该引脚无影响。
在输出模式下,置位将提高 IO 速度。此功能适用 O3 和 O4 输出类型。
在输入模式时(DDR=0):
0:禁止外部中断
1:使能外部中断
在输出模式时(DDR=1):
0:输出速度最大为 2MHZ
1:输出速度最大为
IO 口配置表
关键字:STM8 STM8S208MB 寄存器
引用地址:
STM8 STM8S208MB寄存器
推荐阅读最新更新时间:2024-11-12 13:30
STM8学习笔记---定时器 TIM4功能实现
STM8单片机的TIM4和TIM6是8位基本定时器。 定时器功能如下: 基本定时器的功能比较简单,一般只用来实现定时功能。 基本定时器的寄存器也比较少。此处用定时器4测试,TIM4初始化代码如下: void Timer4_Init( void ) { TIM4_PSCR = 0x07; //2^7=128 分频 16M/128=125K TIM4_SR = ( ~0x01 ); //清除更新中断标志 TIM4_ARR = 125; //1ms TIM4_CNTR = 0; TIM4_CR1 |= 0x01;
[单片机]
STM8 PS2接口应用子程序
软件设计 /********************************************************************* 目 的: 建立PCF8563操作库 目标系统: 基于STM8单片机 应用软件: Cosmic CxSTM8 *********************************************************************/ #include ws_i2c.h void PS2_Init(void) { PRESS_DATA_DDR; SHIFT_DATA_DDR; IN_SDA; } void check(void
[单片机]
STM8自学笔记-002续 点亮LED
点亮LED 点亮一个LED灯,应该是大多数单片机教程的第一步。这是最为基础的一步,也是最令人兴奋的一步,迈出这一小步就是迈入STM8大门的一大步。 通常,要对LED所在的单片机引脚(Pin)进行模式和电平设置,才能够点亮LED。先说C51和STM32上点亮LED的大致步骤,再来对比STM8上的步骤。 熟悉51单片机的童鞋应该很清楚,先用sbit映射一个Pin,然后让映射量置1来点亮该Pin连接的LED(拉电流驱动,与之相反的叫灌电流驱动)。也就是说,至少需要两行代码才能点亮LED。 sbit LED=P1^0; LED=1; //将P1.0口赋值 1,对外输出高电平 在STM32库函
[单片机]
ATmega128 MCU 控制和状态寄存器-MCUCSR
MCU 控制和状态寄存器提供了有关引起MCU 复位的复位源的信息。 在ATmega103 兼容模式下只有EXTRF 和PORF 存在。 • Bit 4 – JTRF: JTAG 复位标志 通过JTAG 指令AVR_RESET 可以使JTAG 复位寄存器置位,并引发MCU 复位,并使JTRF 置位。上电复位将使其清零,也可以通过写”0” 来清除。 • Bit 3 – WDRF: 看门狗复位标志 看门狗复位发生时置位。上电复位将使其清零,也可以通过写”0” 来清除。 • Bit 2 – BORF: 掉电检测复位标志 掉电检测复位发生时置位。上电复位将使其清零,也可以通过写”0” 来清除。 • Bit 1 – EXTRF: 外部复位
[单片机]
STM8学习笔记——PWM模块
首先将管脚配置为推挽输出。下面以向上计数模式为例来讲述PWM产生的原理:TIMx开始向上计数,TIMx_CNT为计数值,计数一次加1,TIMx_ARR确定了计数的上限,达到上限后计数器从0开始重新计数,所以一次PWM频率就由TIMx_ARR来确定了,即计数器时钟*(TIMx_ARR-1),频率确定了,接下来就是占空比。占空比是由TIMx_CCRx来确定的,PWM模式1下当TIMx_CNT TIMx_CCRx,输出OCiREF有效电平,TIMx_CNT =TIMx_CCRx时,输出OCiREF无效电平,至于有效电平是0还是1,要设置TIMx_CCERx,这样产生了一个PWM波形,可以说配置非常灵活,当TIMx_CCRx为0时,占
[单片机]
STM32片上Flash内存映射、页面大小、寄存器映射
一、怎么看Flash大小 1.1 通过型号 型号会印在MCU表面,可以通过观察获得,我的是STM32F103RBT6(以下分析基于这个型号),对照下图的STM32产品命名,可知STM32F103RBT6的Flash是128KB。 () iframe id="iframe_0.15392923285253346" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22http://blog.chinaunix.net/attachment/2011
[单片机]
同一个STM8工程换目录位置后生成的HEX校验和不一致的问题
在使用IAR FOR STM8做003开发的时候,发现同一个工程,相同的文件,在拷贝到其他目录后,重新编译生成的HEX和原来的不一致,这是因为HEX文件尾部有目录的信息,所以换目录校验和会变,但功能没变,解决方法就是在stm8s_conf.h中注释掉 断言#define USE_FULL_ASSERT (1) ;改之前先去掉文件的只读属性,改完再加上只读,比较发现关掉能省出二百多字节
[单片机]
STM8 定时器 TIM 中断进入不了
我用的是IAR编译器,昨晚弄了下STM8,发现跟STM32的风格挺像的,所以上手也很快。 今天弄了下TIM4定时器,中断死活进入不了,弄了好久,查了中断号、服务函数啥的,最后发现问题是: 我原来大意 直接复制过去的代码是 void TIM4_Init(void); IAR居然没给我报错。。搞发查了好久才发现问题,这条语句无法正常执行。
[单片机]