STM8库函数开发资源和基本步骤摘要

 

 

1、EWstm8多个版本下载



IAR EWSTM8系列教程01_IAR介绍、下载、安装和注册 - 知乎 https://zhuanlan.zhihu.com/p/42499895
下载地址:https://pan.baidu.com/s/1slF5kYx#list/path=%2F https://pan.baidu.com/s/1slF5kYx#list/path=%2F

 

2、标准库下载

stm8s标准固件库(STSW-STM8069)下载,http://www.st.com/web/en/catalog/tools/PF258009

3、操作入门

stm8开发环境配置及测试 - 小草光明与嵌入式 - CSDN博客 https://blog.csdn.net/xiaocaoguangming/article/details/9327977

STM8自学笔记-002 STM8初上手和开发环境的建立 - weixin_43572492的博客 - CSDN博客 https://blog.csdn.net/weixin_43572492/article/details/85068875

基于STM8官方标准库建立IAR工程

1. 去ST官网或论坛下载STM8的标准外设库
2. 解压缩下载的压缩包
3. 建立STM8 工程模板文件夹并复制相关文件
  在文件夹下建立四个文件(这个看个人喜好),我喜欢建立一个工程文件夹Project用于存放工程文件,Library文件用于存放库文件,App用于存放用户程序,Doc用于存放说明文档。
  将官方的库文件Libraries文件下STM8S_StdPeriph_Driver这个文件下的内容复制到自己新建的Library文件下,把官方Project文件下Template文件夹下main.c stm8s_conf.h stm8s_it.c 和stm8s_it.h复制到App文件夹下。
4. 给工程添加组和文件
  打开IAR 选择Project->Create New Project->ok,将文件保存到Project文件夹下;右击工程选择Add Group,然后依次添加App组,Libraries组。
  在App和Libraries文件中添加文件。在Libraries中添加标准库中src文件夹里所有的*.c文件。
5. 工程设置
  选择使用的STM8单片机的具体型号,要注意Code和Data的选项。以STM8S103K为例子。
  设置编译器的路径,该路径是寻找*.h的路径。PROJDIR PROJ_DIRPROJ 
D
​    
 IR指的是工程文件workspace的保存路径,即*.eew文件的路径。…指的是上一级路径,即父目录。
  明白上述两点后,将STM8库文件的inc路径包含进去。

//采用相对路径,这样在将程序移到其它电脑时不必重新设置库函数路径
$PROJ_DIR$\..
$PROJ_DIR$\..\App
$PROJ_DIR$\..\Library\inc

然后设置Debugger模式为ST-Link。至此设置完成,可以编译工程了。
  然后会看到报错!?
  错误提示是没有在头文件stm8s.h中设置芯片类型。那就去设置——打开stm8s.h做修改,对芯片型号进行定义,我们选择的是stm8s103,这里应根据实际芯片类型进行选择。
  然后再次进行编译。会发现还是会报错!??
  这次的错误提示是无法定义ADC2、CAN等等。为什么会出现这种问题?我们继续看stm8s.h文件,里面有说明。
  这里说我们定义STM8S103以后只会去定义ADC1,不会定义ADC2!?实际上,因为8S103芯片上并没有ADC2外设,所以将ADC2、CAN等等没有定义的.c文件从Libraries组移除就好(添加的是STM8S所有的外设的源文件,但是具体要看目标MCU支持哪些外设)。
  移除以后再次进行编译就不会报错了,可以看到有一个warning,那是ST官方的一个库函数有出口参数却没有return语句。
  到此结束,接下来就可以按照自己的需要进行编程调试了。

 4、STM8中GPIO的12种模式

 

原文:https://blog.csdn.net/weibo1230123/article/details/81204776 

(1)GPIO_Mode_In_FL_No_IT:浮空输入无中断
(2)GPIO_Mode_In_PU_No_IT:上拉输入无中断
(3)GPIO_Mode_In_FL_IT:浮空输入有中断 
(4)GPIO_Mode_In_PU_IT :上拉输入有中断 
(5)GPIO_Mode_Out_OD_Low_Fast :开漏-输出低-高速   Output open-drain, low level, 10MHz   
(6)GPIO_Mode_Out_PP_Low_Fast :推挽-输出低-高速   Output push-pull, low level, 10MHz   
(7)GPIO_Mode_Out_OD_Low_Slow :开漏-输出低-低速   Output open-drain, low level, 2MHz   
(8)GPIO_Mode_Out_PP_Low_Slow :推挽-输出低-低速   Output push-pull, low level, 2MHz   
(9)GPIO_Mode_Out_OD_HiZ_Fast :开漏-输出高阻-高速   Output open-drain, high-impedance level, 10MHz   
(10)GPIO_Mode_Out_PP_High_Fast :推挽-输出高-高速   Output push-pull, high level, 10MHz   
(11)GPIO_Mode_Out_OD_HiZ_Slow :开漏-输出高阻-低速   Output open-drain, high-impedance level, 2MHz   
(12)GPIO_Mode_Out_PP_High_Slow :推挽-输出高-低速   Output push-pull, high level, 2MHz
--------------------- 


stm8的定时器的tim2的通道1,通道2输出pwm,对应的GPIO需要配置吗,如何配置啊?

不需要任何配置的,只需要设置PWM的相关寄存,配置成输下PWM,他自动就输出PWM了

stm8的TIM1和TIM2可以输出PWM,输出管脚是TIM的通道,你可以使用库函数设置
先配置PWM频率,再配置PWM类型,通道,然后再使能定时器,如果需要使用中断,还可以打开中断
/* Time base configuration */
TIM2_TimeBaseInit(TIM2_PRESCALER_1, 999); //2kHz
/* PWM1 Mode configuration: Channel1 */
TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,CCR1_Val, TIM2_OCPOLARITY_HIGH);
TIM2_OC1PreloadConfig(ENABLE);
/* TIM2 enable counter */
TIM2_Cmd(ENABLE);

5、如需输出pwm还需要设置选项字节

 

STM8S---选项字节(Option Byte)写操作之IO复用 - FreeApe - CSDN博客 https://blog.csdn.net/FreeApe/article/details/47008033

/* MAIN.C file
Functons    :   操作option byte字节,设置IO复用,来修改TIM2的CH3通道PWM输出管脚PA3 or PD2
Date        :   2015年7月22日
Author      :   yicm
Notes       :   
 */
 
#include<stm8s003f3p.h>
 
void CLK_init(void)
{
    CLK_ICKR |= 0X01;           //使能内部高速时钟 HSI
    CLK_CKDIVR = 0x08;          //16M内部RC经2分频后系统时钟为8M
    while(!(CLK_ICKR&0x02));    //HSI准备就绪 
    CLK_SWR=0xe1;               //HSI为主时钟源 
}
 
void Init_GPIO(void)
{
    /*设置为推挽输出,PD2接了LED灯*/
    PD_DDR |= 0X04;             //设置PD2端口为输出模式
    PD_CR1 |= 0X04;             //设置PD2端口为推挽输出模式
    PD_CR2 &= 0XFD;
 
    PA_DDR |= 0X08;             //设置PA3端口为输出模式
    PA_CR1 |= 0X08;             //设置PA3端口为推挽输出模式
    PA_CR2 |= 0XF7;
}
 
void Init_Tim2(void)
{
    TIM2_CCMR3 |=   0X70;   //设置定时器2三通道(PD2)输出比较三模式
    TIM2_CCMR3 |= 0X04;     //输出比较3预装载使能
 
    TIM2_CCER2 |= 0x03;     //通道3使能,低电平有效,配置为输出
 
    // 初始化时钟分频器为1,即计数器的时钟频率为Fmaster=8M/64=0.125MHZ
    TIM2_PSCR = 0X07;   
    //初始化自动装载寄存器,决定PWM 方波的频率,Fpwm=0.125M/62500=2HZ
    TIM2_ARRH = 62500/256;
    TIM2_ARRL = 62500%256;
    //初始化比较寄存器,决定PWM 方波的占空比:5000/10000 = 50%
    TIM2_CCR3H = 31250/256;
    TIM2_CCR3L = 31250%256;
 
 
    //启动计数;更新中断失能
    TIM2_CR1 |= 0x81;
    //TIM2_IER |= 0x00;        
}
 
void Write_Option_Byte(void)
{   
    unsigned char opt[6] = {0,0,0x00,0,0,0};
 
    /*解锁Flash*/
    do
    {
        FLASH_DUKR = 0xAE;
        FLASH_DUKR = 0x56;      
    }
    while(!(FLASH_IAPSR & 0X08));
 
    /*对选项字节进行写操作使能*/
    FLASH_CR2 = 0X80;
    /*互补控制寄存器*/
    FLASH_NCR2 = 0X7F;
    /*写操作,0x02:PD2。0x00:PA3*/
    *((unsigned char *)0x4800) = opt[0];
 
    *((unsigned char *)0x4801) = opt[1];
    *((unsigned char *)0x4802) = ~opt[1];
 
    *((unsigned char *)0x4803) = opt[2];
    *((unsigned char *)0x4804) = ~opt[2];
 
    *((unsigned char *)0x4805) = opt[3];
    *((unsigned char *)0x4806) = ~opt[3];
 
    *((unsigned char *)0x4807) = opt[4];
    *((unsigned char *)0x4808) = ~opt[0];
 
    *((unsigned char *)0x4809) = opt[5];
    *((unsigned char *)0x480A) = ~opt[5];  
 
    /*等待写结束*/
    while(!(FLASH_IAPSR & 0x04));
}
 
main()
{
    int i;
 
    Write_Option_Byte();    //运行程序时,屏蔽  
    for(i=0;i<10000;++i);   //延时效果,有时加上延时,能够使擦写和应用程序同时不屏蔽也能管用
 
    CLK_init();             //擦写时屏蔽,否则下次stlink仿真时会出错
    Init_GPIO();            //擦写时屏蔽,否则下次stlink仿真时会出错
    Init_Tim2();            //擦写时屏蔽,否则下次stlink仿真时会出错
    while (1);
}

6、通过IAR修改选项字节

 STM8在IAR中Option Byte配置 - STM8 - 论坛-意法半导体STM32/STM8技术社区 http://www.stmcu.org.cn/module/forum/thread-607140-1-1.html

1、在工程Options...选项Debugger中选择你的调试工具,选择好后会在IAR的菜单栏中出现对应的调试工具菜单。如下图所示,我这里选择的是ST_LINK。
 
2、选择上图所示ST_LINK菜单中的Option Bytes选项,进入下图所示的设置界面。
 
3、通过右键修改需设置的选项,保存并记住保存的路径。
4、如下图所示再次打开工程Options...对话框,选择你是用的调试工具选项。我使用的的是ST-LINK。勾选Use option byte configuratio并添加刚才保存的Option Bytes设置文件。添加设置文件时可以使用绝对路径也可以使用相对路径。图中所示为绝对路径,建议使用相对路径如$PROJ_DIR$\settings\obcf.obc。
 
5、进入程序仿真调试,在Memory察看窗口中选择OPTION选项,就可以察看到如下图所示option bytes配置结果。

 STM8S的配置字节OptionByte - 图文 - 百度文库 https://wenku.baidu.com/view/205181b2d0d233d4b14e69fa.html

  • 4
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值