今天是学习定时器和中断的配置,并通过定时器实现LED间隔一秒闪烁。

LED在最小系统板中位置如下:

#include "led.h"void Led_Init(void)
{GPIO_InitTypeDef LED_InitStructure;   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);        //打开GPIOC端口的时钟,至于为什么每次都要打开对应的时钟,请继续往下看LED_InitStructure.GPIO_Pin = GPIO_Pin_13;          //LED对应GPIOC端口的13引脚LED_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //设置输出模式为普通推挽输出LED_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;      //设置输出速度为2MHzGPIO_Init(GPIOC, &LED_InitStructure);
}void Led_Open(void)
{GPIO_ResetBits(GPIOC, GPIO_Pin_13);
}void Led_Close(void)
{GPIO_SetBits(GPIOC, GPIO_Pin_13);
}

时钟问题:

为什么所有寄存器都需要时钟才能配置?因为寄存器是由D寄存器组成的,当时钟到来触发,触发器才能被改写,STM32的时钟就相当于一个开关,当你需要使用的时候就打开相对应的时钟。

#include "stm32f10x.h"void Led_Init(void);
void Led_Open(void);
void Led_Close(void);

定时器的配置如下:

#include "tim.h"uint8_t flag = 0;void Tim_Init(void)
{TIM_TimeBaseInitTypeDef Tim_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);Tim_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;     //时钟分割(不分频)Tim_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;       //计数模式配置为向上计数模式Tim_InitStructure.TIM_Period = 10000-1;     //自动重装载寄存器周期的值Tim_InitStructure.TIM_Prescaler = 7200-1;        //用来设置预分频值 TIM_TimeBaseInit(TIM2, &Tim_InitStructure);TIM_Cmd(TIM2, ENABLE);TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
}void TIM2_IRQHandler(void)
{if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET){flag = 1 - flag;}TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
}

flag是个标志位,后面用来使LED闪烁。

因为是间隔一秒,所以这里定时器要配置为1秒。

根据:定时时间 = (TIMx_ARR+1)* (TIMx_PSC+1)/TIMcCLK

TIMx_ARR:        自动重装载寄存器的值。

TIMx_PSC:        预分频器的值。

TIMcCLK:        这里我们没有分频,所以是72MHz。

#include "stm32f10x.h"extern uint8_t flag;void Tim_Init(void);

main.c代码如下:

#include "stm32f10x.h"
#include "led.h"
#include "tim.h"
#include "nvic.h"int main()
{Tim_Init();Led_Init();Nvic_Init();while(1){if(flag == 1){Led_Open();}else{Led_Close();}}
}

烧入代码,效果如下图:

STM32F103C8T6实现LED闪烁相关推荐

  1. [GPIO]stm32f103c8t6 笔记LED闪烁

    1.写LED.c代码2 #include "led.h" //初始化PB5和PA1为输出口.并使能这两个口的时钟 //LED IO口初始化 void LED_Init(void) ...

  2. STM32F103C8T6串口控制LED闪烁

    任务:开启时单片机回复已打开:关闭时在电脑显示已关闭:发 送 1 打开:发送 2 关闭. 本次学习是基于STM32的通用定时器结合串口,进行对LED灯闪烁的控制,使得延时函数时带来的误差性,以及消耗大 ...

  3. 单片机led闪烁代码_单片机、555实现LED闪烁电路

    有朋友在后台发消息,希望设计一个LED闪烁电路,闪烁频率为2Hz,想了解LED闪烁的电路原理是什么,下面解答一下,看看有没有写的很通俗易懂.要设计一个闪烁电路,闪烁频率为2Hz,即500ms亮灭交替. ...

  4. STM32之定时器中断控制LED闪烁

    上篇博客我们是用延时函数实现了LED的闪烁,今天我们使用STM32的定时器来使LED闪烁. 关于32的定时器的种类,今天我在这先不做过多的说明,有时间我会再另写一篇博客来专门介绍32的定时器.今天我们 ...

  5. 控制led闪烁次数_单片机驱动LED灯的进阶之路

    对于大多数单片机的学习者或者是从事单片机行业的工程师来说,单片机驱动LED闪烁起来的时候,基本都是我们入坑的开始,同时当时的那种兴奋与喜悦都是难以忘怀的,从LED灯亮起,到闪烁,再到各种流水灯,能开心 ...

  6. STM32通过串口控制LED闪烁或者呼吸效果

    STM32通过串口控制LED闪烁或者呼吸效果 目录 STM32通过串口控制LED闪烁或者呼吸效果 1.准备工作 2.思路分析 3.实际操作 4.小结 1.准备工作 1.首先我们需要准备32的最小系统板 ...

  7. 【STC8H8K64U】开天斧3.1学习笔记——LED闪烁

    1.添加头文件<stc8h.h>,必须是小写,不然keil不认.(不知道为什么keil不认小写,反正能用就行) #include <stc8h.h> 1.1.若要使用空指令&q ...

  8. 用CCS搭建简单的F28069M工程并控制LED闪烁

    文章目录 tips 一 项目的搭建 1.1 说明 1.2 建立步骤 二 LED闪烁代码 2.1 Launch Code Composer Studio (CCS) and Open Resource ...

  9. 嵌入式开发学习笔记9-做一个好玩的LED闪烁

    嵌入式开发学习笔记9-做一个好玩的LED闪烁 前言 实际操作 程序功能 实现思路 程序源码 实现效果展示 前言 LED小灯闪烁实质是控制单片机上的I/O口,通过向I/O口循环输入高低电平,从而控制LE ...

最新文章

  1. pandas获取dataframe数据列的数据类型、获取dataframe每类数据类型数据列的个数、使用select_dtypes函数、include参数以及exclude参数按照数据类型筛选数据
  2. 彩蛋还是陷阱?我所经历的期权往事
  3. JAVA Thread线程异常监控
  4. http --- 密码、密钥、对称(公开)密钥加密系统、数字签名、数字证书的一些概念
  5. C++总结笔记(五)——构造函数和析构函数
  6. 【Linux小技巧】开启关闭蜂鸣声
  7. 【STM32】IIC的基本原理(实例:普通IO口模拟IIC时序读取24C02)(转载)
  8. 浅析怎样提升win7 旗舰版系统显示质量
  9. 经验 | 深度学习中从基础综述、论文笔记到工程经验、训练技巧
  10. php5.2、5.3和5.4,Apache多虚拟主机多版本PHP(5.2+5.3+5.4)共存运行配置
  11. Requested registry access is not allowed 解决办法
  12. 变量函数命令 - Hugarian , Camel Pascal
  13. VS2013 + Qt 提示 There‘s no Qt version assigned to this project for platform Win32
  14. 关于触发器原理及选型参数
  15. Golang 1.16 新特性-embed 包及其使用
  16. 哈哈,原来这叫做“松鼠症”……并谈谈我建议的学习方法
  17. Mac Mounty挂载NTFS硬盘报错
  18. C. Petya and Inequiations
  19. 为什么上传速度比下载速度慢
  20. 面试经历|为即将找工作的你保驾护航

热门文章

  1. php 判断后缀名,PHP 文件类型判断代码
  2. 苹果手机怎么在照片上添加文字_手机美图秀秀怎么给图片添加文字
  3. uniapp 原生js实现公历转农历
  4. 从钉钉后台对接考勤打卡信息(仅供参考)
  5. Gradle实践之自定义打包jar+Log开关自动关闭
  6. ARP 地址解析协议 IP地址到MAC地址的转换过程
  7. linux下ftp命令输出日志,ftp中/var/log/xferlog日志解析及ftp常用命令常用
  8. pthread_cond_destroy死锁卡住问题处理记录
  9. 有关MAC、PHY和MII
  10. CF896C Willem, Chtholly and Seniorious(珂朵莉树)