STM8例程大汇集(寄存器版)

发布者:科技创新实践者最新更新时间:2021-10-19 来源: eefocus关键字:STM8  寄存器版  GPIO 手机看文章 扫描二维码
随时随地手机看文章

操作GPIO点亮LED

//head

#include "iostm8s208mb.h"

//normal datatype

#define u8 uint8_t

#define u16 uint16_t

#define u32 uint32_t

typedef unsigned char uint8_t;

typedef unsigned short uint16_t;

typedef unsigned long uint32_t;

//port define 

#define LED0 PI_ODR_ODR0

// function declare

void led_init();

void delayms(u16 count);

//main

void main( void )

{

  led_init();

  while(1)

  {

    LED0=!LED0;

    delayms(500);

  };

}

// functions

void led_init()

{

  PI_DDR_DDR0=1;

  PI_CR1_C10=1;

  PI_CR2_C20=0;

  LED0=1;

}

void delayms(u16 count)

{

  u8 i,j;

  while(count--)

  {

      for(i=0;i<50;i++)

      {

        for(j=0;j<20;j++);

      }

  }

}

数码管驱动

//------------------------------header------------------------------------------

#include "iostm8s208mb.h"

//------------------------------common datatype---------------------------------

typedef unsigned char uint8_t;

typedef unsigned short uint16_t;

typedef unsigned long uint32_t;

#define u8 uint8_t

#define u16 uint16_t

#define u32 uint32_t

//------------------------------macros------------------------------------------


//------------------------------function declare--------------------------------

void delay(u16 count);

//------------------------------main--------------------------------------------

u8 table[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71};

//------------------------------------------------------------------------------

void main( void )

{

    PC_DDR=0XFF;

    PC_CR1=0XFF;

    PC_CR2=0X00;

    PC_ODR=0X80; 

    while (1)

    {

      u8 i;

      for(i=0;i      {

        PC_ODR=~table[i];

        delay(300);

      }

    }

}

//------------------------------functions---------------------------------------

void delay(u16 count)

{

  u8 i,j;

  while (count--)

  {

    for(i=0;i<50;i++)

      for(j=0;j<20;j++);

  }

  

}

中断点亮LED

//------------------------------header------------------------------------------

#include "iostm8s208mb.h"

//------------------------------common datatype---------------------------------

typedef unsigned char uint8_t;

typedef unsigned short uint16_t;

typedef unsigned long uint32_t;

#define u8 uint8_t

#define u16 uint16_t

#define u32 uint32_t

//------------------------------macros------------------------------------------

#define LED PI_ODR_ODR0

//------------------------------function declare--------------------------------

void delay(u16 count);

void GPIO_init(void);

//------------------------------global------------------------------------------


//------------------------------main--------------------------------------------

void main( void )

{

  GPIO_init();

  asm("sim");

  EXTI_CR1=0X20;

  asm("rim");

}

//------------------------------functions---------------------------------------

void GPIO_init(void)

{

  PI_DDR_DDR0=1;

  PI_CR1_C10=1;

  PI_CR2_C20=0;


  PC_DDR_DDR0=0;

  PC_CR1_C10=1;

  PC_CR2_C20=1;  

}


#pragma vector=0X07

__interrupt void EXTI_PORTC_IRQHandler(void)

{

  delay(10);

  if (PC_IDR_IDR0==0)

  {

    LED=!LED;

    while(!PC_IDR_IDR0);

  }

}


void delay(u16 count)

{

  u8 i,j;

  while (count--)

  {

    for(i=0;i<50;i++)

      for(j=0;j<20;j++);

  }

}

LCD1602

//------------------------------header------------------------------------------

#include "iostm8s208mb.h"

//------------------------------common datatype---------------------------------

typedef unsigned char uint8_t;

typedef unsigned short uint16_t;

typedef unsigned long uint32_t;

#define u8 uint8_t

#define u16 uint16_t

#define u32 uint32_t

//------------------------------macros------------------------------------------

#define LCDRS PF_ODR_ODR0

#define LCDRW PF_ODR_ODR3

#define LCDEN PF_ODR_ODR4

#define LCDDATA PB_ODR

//------------------------------function declare--------------------------------

void GPIO_init(void);

void delay(u8 count);

void LCD_init(void);

void LCD_write(u8 data,u8 cmd_flag);

void LCD_display(void);

//------------------------------------------------------------------------------

u8 line1[]="==welcome!anny==";

u8 line2[]=">>>>>>>>>>>>>>>>";

//------------------------------main--------------------------------------------

void main( void )

{

    GPIO_init();

    LCD_init();

    LCD_display();

}

//------------------------------functions---------------------------------------

void GPIO_init(void)

{

    PF_DDR=0XFF;

    PF_CR1=0XFF;

    PF_CR2=0X00;

    PF_ODR=0X00;


    PB_DDR=0XFF;

    PB_CR1=0XFF;

    PB_CR2=0X00;

    PB_ODR=0X00;

}

void delay(u8 count)

{

    u8 i,j;

    while (count--)

    {

        for(i=0;i<50;i++)

            for(j=0;j<50;j++);

    }

}

void LCD_init(void)

{

    LCD_write(0X38,0);

    LCD_write(0X0E,0);

    LCD_write(0X06,0);

    LCD_write(0X01,0);

}

void LCD_write(u8 data,u8 cmd_flag)

{

    LCDRS=cmd_flag;

    LCDRW=0;

    LCDEN=1;

    delay(1);

    LCDDATA=data;

    LCDEN=0;

}

void LCD_display(void)

{

    LCD_write(0X80,0);

    for (u8 i = 0; i < 16; i++)

    {

        LCD_write(line1[i],1);

    }

    LCD_write(0XC0,0);

    for (u8 i = 0; i < 16; i++)

    {

        LCD_write(line2[i],1);

    }    

}

LCD12864(文字模式)

//------------------------------header------------------------------------------

#include "iostm8s208mb.h"

//------------------------------common datatype---------------------------------

typedef unsigned char uint8_t;

typedef unsigned short uint16_t;

typedef unsigned long uint32_t;

#define u8 uint8_t

#define u16 uint16_t

#define u32 uint32_t

//------------------------------macros------------------------------------------

#define LCDRS PF_ODR_ODR0

#define LCDRW PF_ODR_ODR3

#define LCDEN PF_ODR_ODR4

#define LCDPSB PF_ODR_ODR5

#define LCDDATA PB_ODR

//------------------------------function declare--------------------------------

void delay(u8 count);

void GPIO_init(void);

void LCD_write(u8 data,u8 cmd_flag);

void LCD_init(void);

void LCD_display(u8 row,u8 col,u8 *string);

//------------------------------global------------------------------------------

//------------------------------main--------------------------------------------

void main( void )

{

  delay(100);

  GPIO_init();

  LCD_init();

  LCD_display(1,0,"基于ST7902控制器");

  LCD_display(2,0,"================");

  LCD_display(3,0,"使用LCD12864显示");

  LCD_display(4,0,"屏并口显示数据!");

  

}

//------------------------------functions---------------------------------------

void delay(u8 count)

{

  u8 i,j;

  while (count--)

  {

    for(i=0;i<50;i++)

      for(j=0;j<20;j++);

  }

}

void GPIO_init(void)

{

  //lcd DB0~DB7

  PB_DDR |=0XFF;

  PB_CR1 |=0XFF;

  PB_CR2 &=0X00;

  PB_ODR &=0X00;


  //LCD RS RW EN PSB

  PF_DDR |=0X39;

  PF_CR1 |=0X39;

  PF_CR2 &=0XC6;

  PF_ODR &=0XC6;


  LCDPSB=1;

  LCDRW=0;

}

void LCD_write(u8 data,u8 cmd_flag)

{

  LCDRS=cmd_flag;

  LCDEN=1;

  LCDDATA=data;

  delay(1);

  LCDEN=0;

}

void LCD_init(void)

{

  LCD_write(0X0C,0);

  delay(1);

  LCD_write(0X30,0);

  delay(1);

  LCD_write(0X01,0);

  delay(1);

}

void LCD_display(u8 row,u8 col,u8 *string)

{

  switch (row)

  {

    case 1:row=0X80;break;

    case 2:row=0X90;break;

    case 3:row=0X88;break;

    case 4:row=0X98;break;

    default:row=0X80;

  }

  LCD_write(row+col,0);

  while (*string != '')

  {

    LCD_write(*string,1);

    string++;

  }  

}

LCD12864 图像模式

//------------------------------header------------------------------------------

#include "iostm8s208mb.h"

//------------------------------common datatype---------------------------------

typedef unsigned char uint8_t;

typedef unsigned short uint16_t;

typedef unsigned long uint32_t;

#define u8 uint8_t

#define u16 uint16_t

#define u32 uint32_t

//------------------------------macros------------------------------------------

#define LCDRS PF_ODR_ODR0

#define LCDRW PF_ODR_ODR3

#define LCDEN PF_ODR_ODR4

#define LCDPSB PF_ODR_ODR5

#define LCDDATA PB_ODR

//------------------------------function declare--------------------------------

void delay(u8 count);

void GPIO_init(void);

void LCD_write(u8 data,u8 cmd_flag);

void LCD_init(void);

void LCD_pic(u8 *pic);

//------------- -----------------global------------------------------------------

u8 dis[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

[1] [2] [3] [4] [5]
关键字:STM8  寄存器版  GPIO 引用地址:STM8例程大汇集(寄存器版)

上一篇:STM8库函数开发手册(2) //中断、定时器4
下一篇:STM8“线反转式”扫描矩阵键盘

推荐阅读最新更新时间:2024-11-10 12:40

[单片机框架][bsp层][AT32F415][bsp_gpio] GPIO配置和使用
6.1 简介 GPIO 接口包括 5 组通用输入/输出端口。 每个 GPIO 组提供 16 个通用输入/输出引脚;每个 GPIO 端口都有相关的控制和配置寄存器来满足特定的功能,GPIO 引脚上的外部中断都有相关的控制和配置寄存器在外部中断控制器,参考章节 6.中断和事件。 GPIO 端口和其他复用功能同用一个引脚,在特定的封装下获得最大的灵活性。GPIO 引脚可以用于复用功能引脚,通过配置相关的寄存器用作复用功能输入和复用功能输出。 每个 GPIO 引脚可通过软件配置为输出(推挽或开漏),输入(上拉,下拉或无上拉/下拉)或作为外设复用功能。大部分的 GPIO 引脚都有数字或模拟的复用功能。所有的 GPIO 都具备大电流驱动能力。
[单片机]
[单片机框架][bsp层][AT32F415][bsp_<font color='red'>gpio</font>] <font color='red'>GPIO</font>配置和使用
STM32CubeMX:GPIO操作
芯片:STM32F103C8T6 应用管脚: 输出:PA0、PA1 配置界面 /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_GPIO_WritePin(GPIOA,LED0_Pin,(GPIO_PinState)!HAL_GPIO_ReadPin(GPIOA,LED0_Pin)); HAL_GPIO_WritePin(GPIOA,LED1_Pin,GPIO_PIN_SET); HAL_Delay(500); HAL_GPIO_WritePin(GPIO
[单片机]
STM32CubeMX:<font color='red'>GPIO</font>操作
MSP432库函数学习笔记-GPIO
1,GPIO模式设置,PxDIR寄存器 void GPIO_setAsOutputPin(uint_fast8_t selectedPort,uint_fast16_t selectedPins); //设置GPIO为输出模式 void GPIO_setAsInputPin(uint_fast8_t selectedPort,uint_fast16_t selectedPins); //设置GPIO为输入模式 可设置的GPIO口可参考库函数注释 2,GPIO复用功能配置,PxSEL寄存器 void GPIO_setAsPeripheralModuleFunctionOutputPin(uint_fast8_t select
[单片机]
STM8 Nucleo-64开发板上使用GPIO和中断控制器驱动LED
NUCLEO-8S208RB(基于STM8S208RBT6)和NUCLEO-8L152R8(基于STM8L152R8T6)开发板可用于评估所有STM8S系列和STM8L系列微控制器的主要特性。 本应用笔记简要介绍了如何使用NUCLEO-8S208RB和NUCLEO-8L152R8开发板上的GPIO和中断控制器驱动一组LED指示灯。 当微控制器(本例中为STM8S208RBT6或STM8L152R8T6)使用连接到主机电脑的USB电缆供电时,LD2和LD5指示灯(不是板载的LED)开始闪烁。 每次按下“push”按钮,中断控制器产生一个用于控制I/O的中断,然后改变LED的显示方式。 1. 应用说明 本节主要介绍了在NU
[单片机]
在<font color='red'>STM8</font> Nucleo-64开发板上使用<font color='red'>GPIO</font>和中断控制器驱动LED
STM8 IO外部中断设置问题
STM8 IO外部中断设置问题(使用库函数) STM8,掉坑: 程序里面,首先开启了总中断,enableInterrupts(); // 打开总中断 在之后的程序里面,设置打开IO口外部中断,并设置触发电平,代码如下:(坑在这里,注意!!!) GPIO_Init(PORT_BLE_STA, PIN_BLE_STA, GPIO_Mode_In_PU_IT);//上拉,开中断 EXTI_SetPinSensitivity(EXTI_PIN_BLE_STA, EXTI_Trigger_Falling);//下降沿中断 之后杯具发生了,一旦IO口产生一个下降沿,程序马上死掉,看门狗复位。 定位发现,是因为不停
[单片机]
STM32F0(2)GPIO口配置
// 配置端口的输入 , 输出模式 // 将PA0 配置为输入模式 void GPIO_Init(void) { RCC- AHBENR |= RCC_AHBENR_GPIOAEN; // 打开当前GPIO口的时钟 GPIOA- MODER &= ~GPIO_MODER_MODER0_1; // 设置为 输入 模式 GPIOA- MODER &= ~GPIO_MODER_MODER0_0; GPIOA- PUPDR &= ~GPIO_PUPDR_PUPDR0_1; // 设置为上拉输入 GPIOA- PUPDR |= GPIO_PUPDR_PUPDR0_0; } // 将PA15 配置为输出模式 void GPIO_In
[单片机]
STM32F0(2)<font color='red'>GPIO</font>口配置
ST推出经济好用的STM8 Nucleo-32开发板
意法半导体新推出的STM8开发板采用方便好用的Nucleo-32 开发板外形尺寸,让使用8位STM8微控制器(MCU)开发原型速度更快,更经济实惠,更容易上手,适合所有类型的创客。 这款紧凑型板子配备USB接口,板子控制和供电都很简便。板载ST-LINK调试器/编程器,省去了外部调试探针,支持简单的拖放式闪存烧写。板上Arduino™Nano引脚可连接现成的shield板子,简化主板功能扩展,并让用户能够与开源硬件社区互动。这些板子得到主要开发工具链的支持,包括IAR Embedded Workbench for STM8 和Cosmic CXSTM8。 STM8 MCU基于一颗高性能8位内核,集成大容量的片上存储器
[单片机]
ST推出经济好用的<font color='red'>STM8</font> Nucleo-32开发板
STM8 UART
STM8的UART功能强大,除了常规的串口异步通讯外,还拥有LIN主模式、红外编解码器、智能卡模拟等功能。新手还是从基本的串口通讯入手,那些高级功能等熟练以后再慢慢研究吧。 #i nclude iostm8s207sb.h void CLK_init(void) { CLK_CKDIVR = 0x08; // 16M内部RC经2分频后系统时钟为8M } void UART3_init(void) { UART3_BRR2 = 0x01; // 设置波特率9600 UART3_BRR1 = 0x34; // 8M/9600 = 0x341 UART3_CR2 = 0x2C; // 允许接收中断
[单片机]

推荐帖子

MSP430 - Timer_A 定时器中断程序
一、利用定时器定时功能,实现定时器单个溢出中断,实现P3.0方波输出#includecc430x613x.hvoidmain(){WDTCTL=WDTPW+WDTHOLD;//停止看门狗定时器P3DIR|=0x04;//P3口初始化,设置为输出模式TA0CCR0=32768;//定义中断计数周期1s,时钟频率为32.768MHZ,32768/32768=1
火辣西米秀 微控制器 MCU
求教关于温湿度传感器的安装方式
说到温度传感器,曾经只做过一个ds18b20的毕业设计。奇怪的是,有时候要真的做一些相应的应用时,上网搜索相应的现成产品,却总是发现它们看起来跟这些什么i2c的sht11温湿度传感器啊,1-wire单总线的ds18b20看起来一点不沾边。它们总是长得块头很大,机械封装,看起来就像是传统机械结构的产品。它们给人一种看起来很可靠,很稳定的感觉。似乎把它们扔在水里,仍在荒郊野外,田间,泥土里,放个七年八年都不会有问题的。而这些最新的数字化输出的已经在概念上非常接近智能传感器的新产
辛昕 传感器
TI参考设计为下一代家用电器注入更多想象力
我们每天都与人机界面(HMI)进行交互。其中一些交互是显而易见的,比如在触摸智能手机或平板电脑的主屏幕的时候,但最常见的HMI环境其实是在工业应用中。  在近些年举行的各个家电及消费电子博览会上,我们发现越来越多的家用电器(如:冰箱、真空吸尘器机器人、烹饪灶和抽油烟机)增设了HMI触摸键和LED动画功能。在这一趋势的带动下,设计师通过用户友好的交互功能让他们的产品更加智能化和现代化。  而电容式感应技术对实现上述功能起到了非常重要的作用。在设计家用电器时,关注重点在于可靠性、
Aguilera 模拟与混合信号
【跟TI学电源】系列----TI适合中国市场的LED照明驱动系统解决方案
TI适合中国市场的LED照明驱动系统解决方案LED照明驱动系统解决方案-适用于中国市场.rar(9.42MB) 【跟TI学电源】系列----TI适合中国市场的LED照明驱动系统解决方案新版的LED指南哪里有?看到过2010年的至今没见更新过,这个就是最新的。
qwqwqw2088 模拟与混合信号
基于FPGA显示数字钟
用VerilogHDL语言实现,通过VGA在LCD显示针式数字钟,像windows右下角日期和时间属性那个钟那样。我想问的是如何从RAM里读取各个图片然后显示出来,或通过改变图片属性来达到每秒刷新一下各针的位置基于FPGA显示数字钟你的问题也太抽祥了吧?
goodbey155 FPGA/CPLD
电源管理与应用
ACPI是一种比APM更高级、更有效的电源管理模式,使用ACPI模式可以节省更多的电能。这意味着什么﹖那些被发烧友们“狂超”的CPU在“Suspend”模式下的温度会非常低,大概会比APM模式下低4~5度。当然,ACPI模式和其他的电源管理方式一样,也必须要有相应的操作系统和硬件环境来支持。Windows98及其后续产品和Windows2000都对ACPI给予了全面的支持。对于硬件来说情况稍微复杂一些:主要是主板、显卡和网卡都要支持ACPI管理模式。最近购买的硬件应该都没有
zbz0529 电源技术
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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