STM32定时器之控制LED灯循环显示

发布者:数字思维最新更新时间:2018-07-21 来源: eefocus关键字:STM32  定时器  控制LED灯  循环显示 手机看文章 扫描二维码
随时随地手机看文章

/* 

名称:STM32定时器之控制LED灯循环显示 

说明:对于STM32来说,其定时器要比C51的定时器要多,功能也更复杂。


就数目来说来说,STM32的定时器可以分为基本定时器,通用定时器和高级定时器(还包括Systick、看门口定时器和窗口定时器)。就STM32F103,一般来说,它有2个高级定时器TIM1和TIM8、4个通用定时器TIM2/3/4/5、2个基本定时器TIM6和TIM7。而C51一般只有几个定时器。


就功能来说, 

STM32中: 

对于基本定时器,其功能就是和C51差不多,只有定时功能。 

对于通用定时器,它的功能有定时、输出比较、输入捕获。虽然目前,我也不知道后面两个功能是干啥的。 

对于高级定时器,它还比通用定时器多了个互补输出(我也不知道是什么)。 

C51中:它的定时器一般功能比较单一,最常用的就是其定时功能。


就输入的时钟源来说,C51单片机的是来自外部晶振。机器周期为晶振周期的12倍,是一个固定的数。 而STM32的输入源来自系统时钟,其可以通过预分频进行变换。


不过就本质上来说,定时器的功能就是对脉冲的计数。无论是C51还是STM32。不同的是,后者在定时器的基本功能(定时和计数)上又加了一些其他的功能,就像上面所说的输出比较,输入捕获等。


就程序来说: 本实验是用的F103C8系列单片机,它没有基本定时器,所以这里使用TIM2通用定时器来使LED灯每隔1s变换状态一次。


就使用定时器的基本步骤来说,有如下: 

1.定时器基本配置。配置其定时周期,预分频等属性。 

2.中断基本配置。 配置NVIC控制器中和定时器相关的内容。 

3.编写中断服务函数。


*/


主要代码如下:


//基本定时器模式配置

void BASIC_TIM_Config(void)

{

    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;


    //开启定时器2的时钟

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);


    //配置基本的定时器2

    TIM_TimeBaseStructure.TIM_Period = 1000;    //定时周期

    TIM_TimeBaseStructure.TIM_Prescaler = 71;       //预分频为71+1


    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

//  


    // 初始化定时器

    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);


    // 清除计数器中断标志位

    TIM_ClearFlag(TIM2, TIM_FLAG_Update);



    // 开启计数器中断

    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);


    // 使能计数器

    TIM_Cmd(TIM2, ENABLE);


    //暂时关闭定时器2的时钟

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,DISABLE);



}




//基本定时器中断配置

void  BASIC_TIM_NVIC_Config(void)

{

    NVIC_InitTypeDef NVIC_InitStructure;


    // 设置中断组为 0

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);



    // 设置中断来源

    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn ;


    // 设置主优先级为 0

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

 // 设置抢占优先级为 3

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);

}


//通用定时器2的中断服务函数

void TIM2_IRQHandler()

{

    if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET)

    {

        ++time;


        TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);

    }

}


关键字:STM32  定时器  控制LED灯  循环显示 引用地址:STM32定时器之控制LED灯循环显示

上一篇:STM32之LED按键中断
下一篇:S3C2440学习之GPIO按键控制LED灯

推荐阅读最新更新时间:2024-03-16 16:09

STM32读取温湿度传感器DHT11和DHT21(AM2301)系列问题
1、DHT11和DHT21传感器 这两种传感器都是奥松公司的产品,具体的传感器说明书在其官网上有(www.aosong.com)。 DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数 字模块采集技术和温湿度传感技术,确保产品具有枀高的可靠性与卓越的长期稳定性。传感器包括一 个电容式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接。 DHT21(AM2301)湿敏电容数字温湿度模块是一款含有己校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个
[单片机]
<font color='red'>STM32</font>读取温湿度传感器DHT11和DHT21(AM2301)系列问题
一种基于STM32的最小系统及串口通信的实现
STM32是意法半导体(ST)推出的32位RISC(精简指令集计算机)微控制器系列产品,采用高性能的ARMCortex-M3内核,工作频率为72MHz,内置高速存储器(128K字节的闪存和20K字节的SRAM)。本文介绍STM32F103增强型微处理器的最小系统,实现其串口通信的设计调试。 1、STM32的最小系统 STM32微处理器不能独立工作,必须提供外围相关电路,构成STM32最小系统。包括3.3V电源、8MHz晶振时钟、复位电路、数字和模拟间的去耦电路、调试接口、串行通信接口等电路。最小系统原理图如图1所示。 图1 S TM32最小系统原理图 1.1、电源模块与外部晶振 STM32F103C8T6内嵌8MHz高速晶
[单片机]
一种基于<font color='red'>STM32</font>的最小系统及串口通信的实现
stm32常用printf函数支持接口(标准库与hal库)
stm32常用printf函数支持接口(标准库与hal库) /hal库***************/ int fputc(int ch,FILE *f) { HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);//hurat1为串口号,根据自己情况进行选择 return ch; } /标准库*******/ int fputc(int ch, FILE *f) { USART_SendData(USART1, (u8) ch); while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == SET))
[单片机]
T9输入法在嵌入式设备中的实现方案
引言 T9输入法全名为智能输入法,由美国特捷通讯(Tegic Communications)软件公司开发,是目前小型嵌入式人机交互设备中常用的文字输入法,可以直观、简捷、快速地输入简短文字。 在研制基于STM32F107VCT6(以下简称STM32)芯片的人机交互设备时,需要输入文字(主要是汉字)进行人机交互,但是可用的键盘已定型固化而且按键极其有限(仅有7个)。根据T9输 入法的基本原理,研究了一种利用有限键盘资源实现输入汉、英文字的方案。 1 总体设计方案 硬件由4部分组成:中心控制芯片STM32F107VCT6、驱动芯片SSD1963QL9AU315AF控制的7寸480×240像素的TFT显示屏、预装中文字库容量
[单片机]
T9输入法在嵌入式设备中的实现方案
STM32系列MCU开发环境的搭建
导读: 选择某款MCU的学习一般从其开发环境的搭建开始,即安装支持该处理器的编译、调试软件。其中最为关键的就是编译器的选择与安装,编译器的具体工作原理和作用可以参见本公众号“嵌入式ARM篇”合集文章《01_编译过程简介及为什么需要交叉编译器》。支持STM32系列MCU的编译软件有很多种,开发编译环境也各不相同,其中Keil uVision5(以下简称Keil5)编译软件以其简单易用的特点,应用最为广泛。 为了便于MCU的快速推广,开发商积极推出了各自的底层应用函数库,便于工程师的快速开发与应用。STM32系列MCU目前主要有两种函数库,一种是标准库,一种是HAL库(以下简称硬件库)。在使用标准库开发不同系列的MCU时,其中的功
[单片机]
<font color='red'>STM32</font>系列MCU开发环境的搭建
STM32应用简章之PWM输出
① 使能定时器3和相关IO口时钟。 使能定时器3时钟:RCC_APB1PeriphClockCmd(); 使能GPIOB时钟:RCC_APB2PeriphClockCmd(); ② 初始化IO口为复用功能输出。函数:GPIO_Init(); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; ③这里我们是要把PB5用作定时器的PWM输出引脚,所以要重映射配置, 所以需要开启AFIO时钟。同时设置重映射。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
[单片机]
STM32 I2C 死锁问题
背景 其实这篇文章在很久之前就写过解决方法了。在经过不断的实践和深究后发现,硬件 I2C 死锁的问题在ST的官方手册中的勘误手册(errata)中早就提供解决方案,只是我没有重视官方的文档,一直在网络寻求帮助。 即使已经有官方的解决方案,但是还有很多人(包括以前的我)在怀疑 STM32 系列的 I2C 有硬件 BUG。这也告诉我们:网上资源虽丰富,但还是得通过“金睛火眼”来辨别。 讲真的,为了解决 I2C 问题,我在网上看了 N 多篇的文章、Blog 和帖子,还没看到几个人说 “STM32 硬件 I2C 没问题”,反而是看到很多类似这样的:“都听说STM32 硬件 I2C 有问题,一试,发现还真是有问题,改用 IO 模拟吧
[单片机]
<font color='red'>STM32</font> I2C 死锁问题
STM32实现命令行
一、前言 工作中的开发环境都是基于linux命令行交互,作为命令行的重度使用者,玩单片机也要使用命令行工具,百度了一些命令行工具,有几个不错的开源 cmd 交互工具,主要看了 finsh和 nr_micro_shell 两个开源项目。Finsh 功能上限较多,但资源占用比较高,nr 有基本功能,且占用 MCU 资源较少,Github 给出的对比列表如下: Nr 和 Finsh 编译资源对比: 原始工程 添加nr_micro_shell增加量 添加finsh增加量 ROM 63660 +3832 +26908 RAM 4696 +1104 +1304 综合衡量了一下,移植 nr 作为后续项目的一个命令行交互。本篇文章分
[单片机]
在<font color='red'>STM32</font>实现命令行
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved