[STM8] STM8S001试用二:编程体验

[复制链接]
669|0
 楼主| 数码小叶 发表于 2021-1-15 13:15 | 显示全部楼层 |阅读模式
本帖最后由 数码小叶 于 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标准外设固件库对于编程来说,比较常用的就是参考手册和固件库帮助文档了
Snipaste_2021-01-13_15-38-36.jpg
发现不同于STM32的是STM8S的工作电压比较宽泛啊,3V到5.5V都可以,集成了内部EEPROM,虽然管脚很少,但是常用的外设还是有的。ST-LINK上一直没用到过的SWIM引脚就是Single wire interface module ,作为STM8的调试编程接口。


打开自带的例程,很简单,就是实现LED的循环亮灭,
  1. GPIO_Init(KEY_GPIO_PORT, (GPIO_Pin_TypeDef)KEY_GPIO_PINS, GPIO_MODE_IN_PU_NO_IT);
  2.   if(!GPIO_ReadInputPin(KEY_GPIO_PORT,KEY_GPIO_PINS))
  3.   {
  4.      while(1);
  5.   }
程序分三个部分,防死锁,管脚初始化,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中找到,此时,有了固件库的帮助文档,上手就很快了
Snipaste_2021-01-13_16-05-34.jpg

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


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

对于管脚功能,比32更简化了,几个参数合成一个,但是使用起来更方便了,不用配置几个参数
Snipaste_2021-01-13_16-29-16.jpg

而中断服务程序,在stm8s_it.c中都定义好了模板,这一点跟msp430的编程方式一样,
Snipaste_2021-01-13_16-19-25.jpg

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







您需要登录后才可以回帖 登录 | 注册

本版积分规则

105

主题

2560

帖子

19

粉丝
快速回复 在线客服 返回列表 返回顶部