[stm32] Start Tour-定时器内部时钟控制LED闪烁

如果觉得不错就点个赞吧~

一  组装

1、需要准备元件:

32板,杜邦线,跳线,1个LED灯,1个电阻,ST-Link,面包板

2、连线:

跟点亮LED完全一样,不懂的同学请参考我写的另一篇[stm32] Start Tour-LED灯闪烁

 二 具体代码

Timer

#include "stm32f10x.h"                 

void Timer_Init(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//开启时钟,Tim2使APB1总线的外设,第一步
	

	TIM_InternalClockConfig(TIM2);//第二步选择时基单元的时钟源。tim.h的1073行,选择内部时钟
	
	
	//时基单元配置
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//在tim.h的第56行,选了向上计数
	TIM_TimeBaseInitStructure.TIM_Period = 10000- 1;//因为预分频器和计数器都有1个数的偏差,故要-1.都要在0~65535的范围随便选
	TIM_TimeBaseInitStructure.TIM_Prescaler = 7500- 1;
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);//第三步配置时基单元,1055行
	
	TIM_ClearFlag(TIM2, TIM_FLAG_Update);//使计数从0开始显示,而不是1
	
	//开启更新中断到NVIC
	TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);//tim.h的1069行
	
		//配置NVIC
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	NVIC_InitTypeDef NVIC_InitStructure;
	NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//指定所选通道的抢占优先级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//响应优先级
	NVIC_Init(&NVIC_InitStructure);
	
	//打开定时器
	TIM_Cmd(TIM2, ENABLE);
}

main

#include "stm32f10x.h"                 
#include "Delay.h"
#include "LED.h"
#include "Timer.h"


int main(void)
{
	
	LED_Init();
	Timer_Init();
	while(1)
	{
  

	}
}

void TIM2_IRQHandler(void)
{
	if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
	{
		LED_Turn();
	 TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
	}
}

实现效果是LED差不多一秒亮一次,想要频率加快改10000-1和7500-1那里

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟非颜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值