定时器实践----基于Stm32F411RC及CubeMX实现led灯每秒闪烁案例

CubeMX操作:

1.1选择芯片型号

1.2双击右下角型号进入设置部分

1.3打开System Core,并勾选SYS中的Debug为Serial Wire

        在系统核心中,Sys组件被用于实现调试功能。Sys通常是一个特殊的调试接口,用于与处理器进行通信,并允许开发人员读取和写入内部寄存器、跟踪程序执行等。

        在系统内核(system core)中,sys使用serial wire而不是JTAG(Joint Test Action Group)的原因有以下几点:

        1. 简化连接:Serial wire使用少量的引脚(通常只需要两根),而JTAG需要更多的引脚(通常需要四根或更多),这使得使用serial wire更加方便和灵活。

        2. 调试速度:Serial wire具有更高的调试速度,可以实现更快的数据传输速率,从而加快调试和开发过程。

        3. 调试能力:Serial wire可以提供与JTAG相同的基本调试功能,例如读写寄存器、设置断点和单步执行代码等。因此,从功能上来说,serial wire可以满足大多数调试需求。

        4. 功耗考虑:相比JTAG,serial wire通信的功耗更低。这对于功耗敏感的系统设计非常重要。

        需要注意的是,选择使用serial wire还是JTAG取决于具体的应用和所使用的MCU(Microcontroller Unit)或处理器。不同芯片可能会使用不同的调试接口,开发者需要根据具体情况做出合适的选择。

1.4在RCC中选择系统高速时钟

        RCC(Reset and Clock Control)是一个硬件模块或外设,它用于控制和配置处理器系统的复位和时钟

        RCC模块通常包含以下功能:

        1. 时钟源选择:RCC模块允许选择不同的时钟源,如内部振荡器、外部晶振、PLL(Phase-Locked Loop)等。时钟源的选择会影响整个系统的时钟频率和稳定性。

        2. 时钟分频和倍频:RCC模块可以通过分频和倍频功能来调整系统时钟的频率。这对于匹配不同外设和处理器的工作频率非常重要。

        3. 时钟使能:RCC模块通过控制各个外设的时钟使能位,来启用或禁用这些外设的时钟信号。这样可以在需要的时候降低整个系统的功耗。

        4. 复位信号控制:RCC模块可以产生和控制系统复位信号,包括系统复位、外设复位和引脚复位等。复位信号用于将系统和外设恢复到初始状态,以确保系统的可靠启动和初始化。

        RCC模块通常是嵌入式系统中的重要组成部分,它的功能非常关键,因为时钟和复位是处理器和外设正常运行的基础。在编程中,开发者可以使用相关的寄存器和位字段来配置和控制RCC模块的功能。

1.5配置GPIO,设置PC2引脚为输出模式(GPIO_OutPut)

1.6配置系统时钟

定时器概述:        

STM32F411RCT6 1个高级定时器TIM1
7通用定时器TIM2-5 TIM8-11
1个实时时钟RTC
2 个看门狗 定时器, 独立看门狗 IWDG 和窗口看门狗 WWDG
1 CM4 内核 SysTick 定时器

定时器特征比较:

        我们选择TIM3作为系统时钟:

TIM3功能:
        16位向上、向下、中央对齐方式自动装载 计数器
        16位 可编程预分频器 ,可实时修改
        每个TIM 4 独立通道 ,可用于输入捕获、输出比较、 PWM 输出

TIM3硬件结构可分成3个部分:

时钟源
时基单元(TimeBase
捕获和比较通道

         时钟树:     

         系统时钟频率为96MHZ,根据定时时间T,来计算Period与Prescaler

定时时间由 TIM_Base_InitTypeDef 中的 Prescaler Period 设定
设定定时器时钟源频率为TIMxCLK 定时时间T=(Period+1)*(Prescaler+1)

  /TIMxCLK

        Period(周期)和Prescaler(分频器)是用于控制定时器和计数器的两个重要参数。

        Period是指定时器或计数器的计数周期,也可以理解为计数器从0开始递增至指定值的时间。它决定了计时器或计数器的精度和时间间隔。

        Prescaler是用于分频器的参数。分频器可以将输入信号的频率降低,从而降低输出频率。例如,如果将分频器的值设置为2,那么输入信号的频率将被除以2,输出信号的频率也将降低一半。

        在定时器和计数器中,周期和分频器通常被用来控制计数的速度。周期决定了计数器在多长时间内进行一次计数,而分频器决定了计数器每个周期中进行几次计数。通过调整这两个参数,可以实现不同的计时或计数需求。

        例如,如果我们需要一个精确的1秒钟的定时器,我们可以设置一个特定的周期(比如1秒钟所需的计数)和一个适当的分频器(使计数器以适当的速率进行计数),以实现精确的1秒钟的定时。

1.6配置定时器

        Clock configuration(时钟配置)是指在微控制器或嵌入式系统中设置和配置系统时钟源和时钟分频器等参数的过程。

        在嵌入式系统中,时钟被用来同步各个组件和外设的操作,并提供准确的计时和定时功能。时钟配置的目的是确保系统内部的各个部件和外设都能按照预期的速率和时间间隔进行操作。

        时钟配置通常包括以下几个方面:
        1. 选择时钟源:根据具体的硬件平台和需求,选择适合的时钟源,例如晶体振荡器、内部RC振荡器、PLL(锁相环)等。
        2. 配置时钟分频器:根据系统的需求,设置时钟分频器,可以将系统时钟分频为更低频率的时钟信号,用于不同的模块或外设。
        3. 配置时钟模式:设置时钟的工作模式,如连续工作模式、低功耗模式等。
        4. 校准时钟:有时候需要对时钟进行校准,以确保准确的时间计算和定时功能。

时钟配置对于系统的稳定性、功耗、性能和准确性至关重要。不正确的时钟配置可能导致系统运行不稳定、时序错误、外设无法正常工作等问题。

1.7选择Toolchain 为MDK-ARM V5,STM32Cube FW_F4 V1.24.0

1.8最后点击右上角的GENERATE CODE生成代码框架

1.9打开生成的keil文件,在main函数中添加如下代码,同时打开时钟

HAL_TIM_Base_Start(&htim3);//打开时钟
if(__HAL_TIM_GET_FLAG(&htim3, TIM_FLAG_UPDATE))
		{
				HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_2);
				__HAL_TIM_CLEAR_FLAG(&htim3, TIM_FLAG_UPDATE);		
		}//设定标志位

        `__HAL_TIM_GET_FLAG`函数用于检测定时器3的指定标志位是否被置位。在这里,它的第一个参数是定时器的句柄`htim3`,第二个参数是要检测的标志`TIM_FLAG_UPDATE`,该标志位表示定时器的更新事件。如果该标志位被置位,则条件成立,进入代码块中的逻辑。

        在代码块中,`HAL_GPIO_TogglePin`函数用于在GPIOC的第2个引脚上切换电平状态,即将引脚状态从低电平切换到高电平或从高电平切换到低电平。这段代码的作用是使GPIOC的第2个引脚在每次定时器3更新时切换电平。

        最后,`__HAL_TIM_CLEAR_FLAG`函数用于清除定时器3的指定标志位。在这里,它的第一个参数是定时器的句柄`htim3`,第二个参数是要清除的标志`TIM_FLAG_UPDATE`。通过清除标志位,可以准备下一次对定时器更新事件的检测。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32F373RC是意法半导体(STMicroelectronics)公司生产的一款低功耗32位ARM Cortex-M3处理器的微控制器芯片。它为广泛的应用领域提供了高性能和低功耗的解决方案。 针对STM32F373RC的例程主要包括以下几个方面: 1. GPIO控制:GPIO是通用输入输出端口,通过配置和控制GPIO可以实现外部设备的连接和数据输入输出。STM32F373RC的例程中,可以通过GPIO控制LED的开关,按键输入等。 2. 定时器定时器中断:STM32F373RC支持多个定时器,可以用来产生精确的延时或者周期性的中断。例程中可以通过定时器定时器中断来精确控制某些任务的执行时间。 3. 串口通信:串口是一种常用的外设,可以实现与其他设备的通信。STM32F373RC提供多个串口接口,可以通过串口发送和接收数据。例程中可以用串口进行数据的发送和接收。 4. ADC采集:模数转换器(ADC)可以将模拟信号转换为数字信号,STM32F373RC内置多个ADC通道,可以对外部传感器的信号进行采集。例程中可以使用ADC采集外部传感器的数据。 5. DMA传输:直接内存访问(DMA)控制器可以实现数据的高速传输,减小了处理器的负担。STM32F373RC的例程中可以使用DMA传输数据,提高系统的效率。 综上所述,STM32F373RC的例程包括GPIO控制、定时器定时器中断、串口通信、ADC采集和DMA传输等功能。这些例程可以帮助开发者快速上手并使用STM32F373RC芯片,实现各种各样的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值