|
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. 主循环流程图
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()流程图
3 修订记录 表3. 文档修订历史记录 日期 | 版本 | 更改内容 | 2018年6月27日 | 1 | 首次发布。 |
|