STM32通用定时器的基本定时器功能实现灯闪烁

发布者:缘到泉最新更新时间:2016-10-18 来源: eefocus关键字:STM32  通用定时器  基本定时器 手机看文章 扫描二维码
随时随地手机看文章
/*MAIN.C*/

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "misc.h"

 

/* Private function prototypes -----------------------------------------------*/
void RCC_Configuration(void);
void NVIC_Configuration(void);
void GPIO_Configuration(void);
void TIM3_Configuration(void);

/* Private functions ---------------------------------------------------------*/

/**
* @brief Main program
* @param None
* @retval : None
*/
int main(void)
{
RCC_Configuration();
NVIC_Configuration();
GPIO_Configuration();
TIM3_Configuration();

 

TIM_ClearFlag(TIM3, TIM_FLAG_Update);/*清除更新标志位*/
TIM_ARRPreloadConfig(TIM3, DISABLE);/*预装载寄存器的内容被立即传送到影子寄存器 */

TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);   
TIM_Cmd(TIM3, ENABLE);

while (1) {
   ;
}
}
/**
* @brief Configures TIM3
* @param None
* @retval : None
*/
void TIM3_Configuration(void)
{

/*每1秒发生一次更新事件(进入中断服务程序)。RCC_Configuration()的SystemInit()的RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2表明TIM3CLK为72MHz。因此,每次进入中断服务程序间隔时间为((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒 */


TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 7199; 
TIM_TimeBaseStructure.TIM_Prescaler = 9999;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);/*此函数的语句"TIMx->EGR = TIM_PSCReloadMode_Immediate;"以软件方式产生更新事件(注:当发生一个更新事件时,所有的寄存器都被更新,硬件同时(依据URS位)设置更新标志位(TIMx_SR寄存器中的UIF位)。)。*/
}
/**
* @brief Configures the different system clocks.
* @param None
* @retval : None
*/
void RCC_Configuration(void)
{
SystemInit();
  
/* TIM3 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

/* GPIOC clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

}
/**
* @brief Configures NVIC.
* @param None
* @retval : None
*/
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

/* Enable the TIM3 gloabal Interrupt*/
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; 
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/**
* @brief Configure the TIM3 Ouput Channels.
* @param None
* @retval : None
*/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);

/*注:不用为实现通用定时器的基本定时器功能配置Pin*/
}

/*stm32f10x_it.c*/

/* Includes ------------------------------------------------------------------*/

#include "stm32f10x_it.h"

void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) {
   /* Clear TIM3 update interrupt */
   TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
   GPIO_WriteBit(GPIOC, GPIO_Pin_7, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_7)));
}
}

/*注:stm32f10x_stdperiph_lib_v3.0.0 编译器:MDK3.24A*/

 

/*软件仿真:首次进入中断Sec为1.00016507,第二次进入中断Sec为2.00016507,因此2.00016507-1.00016507=1*/

关键字:STM32  通用定时器  基本定时器 引用地址:STM32通用定时器的基本定时器功能实现灯闪烁

上一篇:STM32 利用systick 精确延时 nms
下一篇:stm32外部晶振经倍频后提供系统时钟常用设置

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

stm32和电机开发(直流有刷电机和步进电机)
很多的课程都喜欢把电机原理完完整整讲一遍。但是对于控制的同学,这部分内容是否真的需要值得商榷。做电机控制,大部分都是在学了stm32之类的mcu之后才开始进行的。这部分,不如按照个人认知习惯去学习或许效率更高。 1、直流有刷电机和步进电机 虽然直流无刷电机bldc、pmsm这两类电机似乎更有技术含量一点,但是从学习角度来说,直流有刷电机和步进电机是最合适的。说到直流有刷电机,大家可以把它想象成小时候玩具上的电机。上面会有一个正负极,分别连接在电源两侧。如果是正着接,那么电机就正转;如果反着接,就反转。 步进电机,看的比较多的是二相四线步进电机,可以简单看成两对正负线。如果要步进电机转起来,只需要定时给一定数量的方波即可。比
[单片机]
<font color='red'>stm32</font>和电机开发(直流有刷电机和步进电机)
STM32 IIC OLED中英文显示
简介 ; II2C OLED 中英文显示 ADC数据采集实时显示 八路ADC 一 先上代码 #include oled.h #include sys.h #include delay.h #include oledfont.h #include delay.h #include bmp.h #include gbk.h #define uint unsigned int #define uchar unsigned char //OLED显存 u8 OLED_GRAM ; // 开始信号:SCLK为高电平 SDA由高电平跳变为低电平 开始传输数据 // 结束信号:SCLK为高电平 SDA由低电平跳变为高
[单片机]
<font color='red'>STM32</font> IIC OLED中英文显示
STM32之DAC固定电压输出配置
STM32F103VCT6自带两个12位DAC,DAC的转换速度一直没有查到,网上有人说是1MHZ的频率,那就是1us了。ADC的转换时间在56MHZ工作频率下为1us,在72MHZ工作频率下为1.17us。如果AD和DA有对称关系的话,那么很可能跟ADC的时间相同,刚入手分析的,不见得正确! 由于我此次使用是DA输出电压。STM32的DAC固定电压配置和波形输出配置相似,不同的地方在于它要多调用一个函数:DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);这样才会输出固定的电平。 具体配置如下: void DAC_VOLTAGE_Configuration(void) { D
[单片机]
stm32引脚的VCC与VDD如何连接
stm32单片机作为一种常见的嵌入式设备,是许多电子设备和系统中必不可少的一部分。而在单片机的设计和应用中,电源电压是一个非常重要的参数,其中VCC和VDD作为单片机中的电源引脚,是最为关键的两个引脚之一。本文将介绍VCC和VDD的区别及其在单片机中的应用。 一、VCC与VDD的区别 在单片机中,VCC是最常见的电源引脚,通常用于提供数字电路中需要的正向电压。VCC的电压通常是3.3V或5V,但也有其他电压等级的单片机。 而VDD是一种特殊类型的电源电压,它是指在CMOS电路中使用的电源电压。在CMOS电路中,晶体管使用的是MOSFET,其工作需要两种类型的电压:正向电压和反向电压。VDD是指MOSFET工作时需要的正向电压,
[单片机]
<font color='red'>stm32</font>引脚的VCC与VDD如何连接
单片机stm32时钟频率和配置方法详解
  单片机stm32时钟频率   STM32F103内部8M的内部震荡,经过倍频后最高可以达到72M。目前TI的M3系列芯片最高频率可以达到80M。   在stm32固件库3.0中对时钟频率的选择进行了大大的简化,原先的一大堆操作都在后台进行。系统给出的函数为SystemInit()。但在调用前还需要进行一些宏定义的设置,具体的设置在system_stm32f10x.c文件中。   文件开头就有一个这样的定义:   //#define SYSCLK_FREQ_HSE HSE_Value   //#define SYSCLK_FREQ_20MHz 20000000   //#define SYSCLK_FREQ_36MHz
[单片机]
单片机<font color='red'>stm32</font>时钟频率和配置方法详解
STM32学习笔记之对PWM频率和占空比都可调测试
基于战舰开发板 修改的可以对频率和占空比同时调节的一个简单程序。 span style= font-size:18px; void TIM3_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //ʹÄܶ¨Ê±Æ÷3
[单片机]
STM32入门——时钟篇
STM32中使用任何一个外设都必须打开相应的时钟。在STM32中有5个时钟源可供用户选择: 1.HSI高速内部时钟,RC震荡器,频率为8MHz。 2.HSE高速外部时钟,右英/陶瓷谐振器,或着外部时钟源,4MHz-16MHz. 3.LSI内部低速时钟,RC震荡器频率为40Hz。 4.LSE外部低速时钟,接频率为32.768KHz的石英晶体。 5.PLL锁相环频输出,时钟源可选为HIS/2、HSE或HSE/2。倍频可选2-16倍,但其输出频率最大不能超过72MHz。 系统时钟SYSCLK,它是供STM32中绝大部分器件工作的时钟源,系统时钟可选择为PLL输出、HSI或者HSE。系统时钟的做大频率为72MHz,
[单片机]
stm32单片机待机模式的设计
一 待机模式简介 在stm32的低功耗模式中,待机模式可以实现系统的最低功耗,在这种模式下,只需要2uA左右的电流。 三 待机唤醒程序分析 实验现象: 将程序下载到开发板上后,LED灯会不断地亮灭,当按下KEY2键超过3s时,LED灯灭,标志着单片机进入待机模式,再按下KEY1键,这时唤醒单片机,LED又开始不断地亮灭亮灭。 程序中用到的一些宏定义 #definemacEXTI_GPIO_CLK(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO) #definemacEXTI_GPIO_PORTGPIOC #definemacEXTI_GPIO_PINGPIO_Pin_13 #definem
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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