1. 准备工作及前提
    a、已安装IAR或者STVD
    b、下载标准固件库(StdPeriph_Lib_V2.1.0)备用;
    c、已建立好一个程序模板,如未建立请参考我的博客中的帖子STVD+STM8官方固件库创建工程模板;
    d、(非必要)已下载STM8s库函数所在的程序版手册;
    e、(非必要)Flash Loader Demonstrator,这是ST的ISP烧写,对于STM8只有支持BootLoader的才行,STM8SF103本身木有BootLoader,需要自己写故而此处只是提及,但不要求,后期学习时再更新,但还是装上较好,因为要是后期我更新了呢。

  2. 使用软件
    STVD(全称ST Visual Develop)——编程使用;
    stm8slib(使用手册程序版) ——查找库函数及库函数的调用方法;
    STVP(全称ST Visual Programmer)——烧录程序;

  3. 开始
    1)模板准备工作
    a、复制程序模板,并重命名文件夹为LED,这样既保留了程序模板,又便于后期开发其他项目时不用再重新一步一步执行创建模板时的必要过程,节省时间;
    b、打开STVD后,选择File->Open Wodkspace,选中LED模板Cosmic下的Demo.stw打开即可,但还不忙写自己所要实现的任何功能的函数;
    c、为自己的主函数文件开始处添加块注释信息如下,完成后点击左侧方块收起块(如图)注释,方便管理和修改:
    /**********************************************
    ** 文件名    :  main.c
    ** 作       者 :  Killer
    ** 创建日期 :  2017.12.16
    ** 版       本 :  V0.1
    ** 功能描述 :  ANSI C.主函数调用其他函数实验点
    **                    亮LED或者熄灭LED.
    **********************************************/

    d、编译模板,没有错误时,开始添加自己要实现的功能代码。

    2)功能实现
    3.2.1、理清点亮LED逻辑思路
    a、LED的亮灭是由LED所在GPIO端口引脚输出高低电平来实现;
    b、根据电路接法选择GPIO端口、或者引脚工作模式、电平翻转速率;
    c、(非必要)可以在初始化端口前将对应GPIO端口寄存器恢复到默认值。
    注意:此处端口是指如GPIOA、GPIOB等,由8位(或者说8个引脚)组成,如51单片机的P0、P1等;而GPIO端口引脚、GPIO引脚、引脚则是这些端口的某一个引脚,如51单片机的P0.0,P1.1等,此处可以理解为GPIOA.0 GPIOB.2等;

    3.2.2、根据思路在stm8s_gpio.c文件中查找响应函数
    a、经查看文件可将对应高低电平输出到引脚的函数原型如下:
    void GPIO_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal);
    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);
    参数解释如下
    GPIO_TypeDef* GPIOx:端口类型参数为GPIOA、GPIOB等具体端口;
    uint8_t PortVal:8位二进制组成的一个端口值,每一位操作一个引脚;
    GPIO_Pin_TypeDef PortPins:引脚类型数据,具体为GPIO_Pin_0~GPIO_Pin_7,神奇的是库函数还让你一次性操作高四位或者第四位参数为GPIO_PIN_LNIB(低四位),GPIO_PIN_HNIB(高四位),全部8位就是GPIO_PIN_ALL。

    3.2.3、初始化LED所在引脚
    继续查找stm8s_gpio.c,并找到类似Init字样即可,其中Init是Initialize的缩写。
    void GPIO_DeInit(GPIO_TypeDef* GPIOx);
    void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode);
    其中第一个为恢复到默认值(De【fault】)的初始化;第二个则是对应引脚的初始化;

    3.2.4、使用程序办库函数使用手册配置GPIO引脚
    a、运行

    b、选择库函数功能及配置

    图中手绘步骤数字描述:
    1步:选择对应功能的库函数;
    2~4步:选择该库函数的对应参数,例如本函数GPIO_Init:
    第一个参数为步骤2的LED所在端口;
    第二个参数为步骤3的对应LED在端口中所在引脚;
    第三个参数为该引脚工作模式选择;
    5步,将所选参数生成代码;
    6步:将生成的代码剪切至系统剪贴板,在STVD或其他IDE中粘贴即可。

  4. 总体代码实现

  5. 总结
    对于GPIO操作时须有如下步骤,即使是STM32、STC15等单片机,不论是库函数还是寄存器亦是如此:
    1、初始化端口
    2、初始化所在引脚并设置翻转速度、工作模式,如:开漏/推挽、输入/输出;
    3、对端口或者指定引脚写入数据;

STM8S自学笔记之利用库函数点亮一个LED相关推荐

  1. 【树莓派学习笔记】三、点亮一个LED灯(C语言 - WiringPi、Python - RPi.GPIO/GPIO Zero、bash脚本)

    目录 C语言 WiringPi Python RPi.GPIO GPIO Zero bash脚本 平台:树莓派3B 版本: 2021-05-07-raspios-buster-armhf 若GPIO输 ...

  2. STM8S自学笔记-003 GPIO输出:点亮LED灯 and 跑马灯特效

    STM8S自学笔记-003 GPIO输出:点亮LED灯 and 跑马灯特效 点亮LED GPIO初始化函数:GPIO_Init() GPIO电平操作库函数:GPIO_WriteHigh().GPIO_ ...

  3. GD32学习笔记1(高难度工程,点亮一个LED灯)

    系列文章目录 第一章 GD32学习笔记1(高难度工程,点亮一个LED灯) 文章目录 系列文章目录 前言 一.工作流程 二.新建工程的准备工作 三.新建工程 四.工程目录管理 五.代码实现 1.初始化 ...

  4. 如何利用CubeMX生成代码驱动STM32H750点亮一个LED灯

    如何利用CubeMX生成代码驱动STM32H750点亮一个LED灯 CubeMX软件的配置 GPOI或者说引脚配置 第一步 第二步 工程文件的配置 最后一步:完整生成好的代码 CubeMX软件的配置 ...

  5. 点亮一个LED及原理笔记

    本实验主要学习内容: 1.发光二极管介绍,硬件的介绍. 2.单片机IO口的介绍. 3.完成"点亮一个led灯"程序的编写和编译. 4.进行程序烧写. LED的介绍:它是半导体二极管 ...

  6. 从零点亮一个led灯

    Stm32学习笔记一:stm32cubemx和keil5从零开始点亮一个LED灯 一.软件材料准备:stm32cubemx和keil5软件(下载方式可自行上网搜,这里不再详细叙述) 二.硬件材料准备: ...

  7. 【蓝桥杯嵌入式主板G4】第三章 点亮一个LED

    第一节 硬件解读 任何一个实验都是从点亮一个LED开始的,本次将教大家如何用stm32cubeMX+MDK在蓝桥杯嵌入式主板上面点亮一个LED. 先看蓝桥杯嵌入式主板的原理图:从图中可以看出一共有8个 ...

  8. lajp linux教程,linux IMX6 汇编点亮一个LED灯

    驱动Linux引脚与驱动STM32其实是一样的,都是在操作寄存器,在相应的寄存器上附上相应的值即可驱动. IMX6U手册上有各个管脚的命名,跟STM32不同,IOMUXC_SW_MUC_CTL_PAD ...

  9. stm32CubeMX点亮一个LED灯

    文章目录 一.CubeMX配置LED IO口 二.使用HAL库函数点亮LED 本篇文章将带大家使用CubeMX配置stm32点亮一个LED灯. 一.CubeMX配置LED IO口 1.单片机型号选择: ...

最新文章

  1. 《Python语言程序设计》——2.10 增强型赋值运算符
  2. example:利用impdp通过dblink导入数据库
  3. MySQL Sharding DB (基于Fabric)
  4. android jni开发方式
  5. ConcurrentHashMap 源码分析
  6. 每日一学:如何读取网络图片
  7. c web mysql数据库_C连接Mysql数据库代码
  8. Struts2的struts.xml的配置细节
  9. python----设置默认编码
  10. DOM获取元素、事件基础、操作元素、节点操作
  11. mysql运算中max计算_MySQL 聚合函数、运算符操作、约束
  12. Web页面执行shell命令
  13. Unity基础——碰撞体
  14. python量化选股_python量化选股策略
  15. 12306抢票(1)主体部分
  16. Solidworks2014在win8下安装无权限
  17. Linux的man中文帮助手册
  18. java勾股数_勾股数计算的Java
  19. BeautifulSoup与lxml
  20. 工作中千万不要去做的事:9个需要马上改掉的坏习惯

热门文章

  1. 有关 ovirt 的分析
  2. 为什么新冠德尔塔毒株如此“危险”?
  3. 【DG】DG环境的日常巡检
  4. 假证假章猖狂不止 公章伪造的沉疴爱签电子印章来治愈
  5. 洛谷P5594-【XR-4】模拟赛(模拟)
  6. 微信小程序邀请判断登陆信息(邀请前做其他操作)
  7. VS或VC编译正常,但运行时出现Stack overflow
  8. mysql错误:ERROR 145 (HY000): Table './zentao/zt_action' is marked as crashed and should be repaired
  9. [USACO12FEB]牛券Cow Coupons
  10. 99物联金手指模组AFW127PI