打印
[STM8]

STM8S001试用二:编程体验

[复制链接]
526|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 数码小叶 于 2021-1-15 13:15 编辑

上一篇安装完了IAR,再下载几个ST的官方文档Getting started with STM8S and STM8AF microcontrollers,STM8S Series and STM8AF Series 8-bit microcontrollers Reference manual,STM8S001J3 DatasheetSTSW_STM8069_STM8S和STM8A标准外设固件库对于编程来说,比较常用的就是参考手册和固件库帮助文档了

发现不同于STM32的是STM8S的工作电压比较宽泛啊,3V到5.5V都可以,集成了内部EEPROM,虽然管脚很少,但是常用的外设还是有的。ST-LINK上一直没用到过的SWIM引脚就是Single wire interface module ,作为STM8的调试编程接口。


打开自带的例程,很简单,就是实现LED的循环亮灭,
GPIO_Init(KEY_GPIO_PORT, (GPIO_Pin_TypeDef)KEY_GPIO_PINS, GPIO_MODE_IN_PU_NO_IT);
  if(!GPIO_ReadInputPin(KEY_GPIO_PORT,KEY_GPIO_PINS))
  {
     while(1);
  }
程序分三个部分,防死锁,管脚初始化,while 1死循环,开始没搞懂为啥要加一个防死锁,一上来就一个低电平导致死循环出不了,后来看到这么一段描述才明白 第 8 脚又复用烧录功能。如果启用了其他功能(包括软件启用和选项字启用),第 8 脚的 debug 功能会自动禁止。其时就不能够下载和调试了,这就是我们说的死锁了  ”  所以就是为了防止程序中操作后使芯片无法下载。


没有看到关于时钟的配置,但是在Getting started with STM8S and STM8AF microcontrollers看到这么一段描述:After reset, the CPU starts with the internal RC (HSI clock signal) divided by 8, which means 2 MHz.
GPIO_Init()、GPIO_ReadInputPin、GPIO_WriteReverse()可以在stm8s_gpio.c中找到,此时,有了固件库的帮助文档,上手就很快了


再看下外部中断操作
 EXTI_Init();
enableInterrupts();
void EXTI_Init(void)
{
    GPIO_Init(EXTI_GPIO_PORT, EXTI_GPIO_PINS, GPIO_MODE_IN_PU_IT);
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);
}


初始化+使能操作,初始化里选择管脚功能为外部中断,中断方式为下降沿触发,打开宏定义,可以看到触发方式有4种


对于管脚功能,比32更简化了,几个参数合成一个,但是使用起来更方便了,不用配置几个参数


而中断服务程序,在stm8s_it.c中都定义好了模板,这一点跟msp430的编程方式一样,


综合体验,给人的感受就是使用了库函数编程方式的51,很容易让使用过STM32的人上手。







使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

103

主题

2540

帖子

19

粉丝