天南地北客
发表于: 2018-9-27 10:27:37 | 显示全部楼层

NUCLEO-8S208RB(基于STM8S208RBT6)和NUCLEO-8L152R8(基于STM8L152R8T6)开发板可用于评估所有STM8S系列和STM8L系列微控制器的主要特性。


本应用笔记简要介绍了演示固件Discover,该固件已经提前烧录在STM8S208RBT6和STM8L152R8T6微控制器的闪存中。


该演示固件使用STM8S系列和STM8L系列的基本8位定时器,并将其配置为时基发生器,每次按下用户按钮时改变LED LD1的闪烁频率。 当STM8 Nucleo-64开发板通过连接到主机PC的标准USB电缆上电时,LED LD1开始慢慢闪烁,这表示已成功完成烧录。


1     应用说明

1.1     硬件要求

本应用笔记使用以下STM8 Nucleo-64开发板的板载资源:

•   LED指示灯LD1

•   用户按钮B1

无需额外的硬件即可在STM8 Nucleo-64开发板上运行此演示应用程序。


1.2    应用原理图

有关实施细节,请参阅以下文档:

•    STM8L152R8T6 Nucleo-64板用户手册(UM2351)

•    STM8S208RBT6 Nucleo-64板用户手册(UM2364)


1.3   应用规则

本应用笔记使用8位定时器TIM4作为时基发生器来控制LED指示灯LD1的闪烁频率。每次STM8S系列或STM8L系列微控制器检测到用户按钮B1上的事件,据此调节LED的每次切换之间的延迟时间(TIM4时基的倍数)以改变闪烁频率。


在应用程序启动时,闪烁周期配置为1秒,LD1以此速率(每秒)切换。此配置允许直观地检查是否成功编程STM8S系列或STM8L系列设备的闪存。


每次在用户按钮B1上检测到按钮事件时,LD1闪烁频率根据下表中描述的设置增加。

表2.  LED LD1配置

用户按钮B1
LD1
切换周期
在应用程序启动时(仅)
切换
1秒
第一次按下
切换
200毫秒
第二次按下
切换
100毫秒
第三次按下
切换
40毫秒

2     软件说明

2.1    STM8S系列软件说明

该应用软件使用STM8S系列标准固件库来控制通用功能和外围设备:

•    时钟(CLK)

时钟控制启用并向CPU和外设提供正确的时钟频率。

上电时,主时钟源自动选择为HSI时钟,预分频器分频系数=1。

应用程序代码不会更改此设置:fMASTER = 16 MHz。

•     GPIO

GPIO驱动MCU I / O与外部硬件连接。

它们将端口PC5配置为输出推挽高电平以驱动LED LD1。将PE4配置为带外部中断的浮动输入,连接到用户按钮B1。

该中断由中断控制器控制。

•    EXTI

外部中断控制配置为控制连接到PC5的按钮上的外部中断灵敏度。

它配置为每次在PC5上检测到下降沿(仅下降沿)时触发中断。

•    TIM4

TIM4是一个基本的8位定时器,用作1 ms时基。应用程序使用此时基来控制LD1闪烁频率。

TIM4由应用程序配置如下:

- 向上计数模式

- TIM4_PSCR = 7

- 计数频率:Fck_cnt = F_master / 2 ^ PSCR [2:0] = 16 MHz / 128 = 125 khz

- TIM4_ARR = 0x7C(124个周期)


2.2     STM8L系列软件说明

该应用软件使用STM8L系列标准固件库来控制通用功能和外围设备:

•     时钟(CLK)

时钟控制启用并向CPU和外设提供正确的时钟频率。

上电时,主时钟源自动切换到HSE_bypasse,预分频器分频系数 = 1。

应用程序代码不会更改此设置:fMASTER = 8 MHz。

•    GPIO

GPIO驱动MCU I / O与外部硬件连接。

它们将端口PB5配置为输出推挽式高电平,以驱动LED LD1。它们将PG4配置为带外部中断的浮动输入,与用户按钮B1连接。

该中断由中断控制器控制。

•    EXTI

外部中断控制配置为控制连接到PB5按钮上的外部中断灵敏度。

它配置为每次在PB5上检测到下降沿(仅下降沿)时触发中断。

•    TIM4

TIM4是一个基本的8位定时器,用作1 ms时基。应用程序使用此时基来控制LD1闪烁频率。

TIM4由应用程序配置如下:

- 向上计数模式

- TIM4_PSCR = 5

- 计数频率:Fck_cnt = F_master / 2 ^ PSCR [3:0] = 8 MHz / 32 = 250 khz

- TIM4_ARR = 0xF9(249个周期)


2.3     应用软件流程图

本节概述了应用软件主循环以及控制LD1闪烁频率的函数。

2.3.1    主循环流程图

下图显示了应用程序软件主循环的流程图。

图1.  主循环流程图

Figure 1. Main loop flowchart.jpg


2.3.2 LED_Blink()流程图

下图显示了主程序的LED_Blink()函数部分的详细流程图。该LED_Blink()函数实现了根据通过按钮选择的状态控制LED闪烁速度的算法。


在应用程序启动时,状态机处于默认状态,LD1每隔1秒切换一次,然后BlinkSpeed在每次检测到按钮时递增。在状态机的状态1和状态2中,编程闪烁频率改变了。

LED LD1闪烁频率使用8位定时器TIM4,配置为时基发生器的来定义每1 ms更新一次中断。

切换周期取决于PeriodNumber的值。在切换LED LD1之前,此变量定义计时器中断的次数。

因此,LED闪烁频率只能是1 ms的倍数。

图2. LED_Blink()流程图

Figure 2. LED_Blink() flowchart.jpg


3    修订记录

表3.  文档修订历史记录

日期
版本
更改内容
2018年6月27日
1
首次发布。
跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 10 | 回复: 18



手机版|

GMT+8, 2024-3-29 10:31 , Processed in 0.219811 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表