STM32--基本定时器的应用

发布者:HeavenlyMelody最新更新时间:2017-10-26 来源: eefocus关键字:STM32  基本定时器 手机看文章 扫描二维码
随时随地手机看文章

实验目的:使用基本定时器TIM6控制LED的亮灭。

void GPIO_Config(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOC, &GPIO_InitStructure);

}

void TIM6_Init(void)

{

    TIM_TimeBaseInitTypeDef   TIMBASE6;

    TIM_DeInit(TIM6);

 

    TIMBASE6.TIM_Period=10000-1;   //设置计数溢出大小  10KHZ/10000=1HZ;    ARR

    TIMBASE6.TIM_Prescaler=800-1; //预分频系数 8M/800=10KHZ;         PSC

    TIMBASE6.TIM_ClockDivision = 0x00; //设置时钟分割 0x00 不分割

    TIMBASE6.TIM_CounterMode=TIM_CounterMode_Up; //设置计数器模式为向上计数模式

    TIM_TimeBaseInit(TIM6, &TIMBASE6);     //初始化TIM6

 

    TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE);  //将更新事件设置为中断源

 

    TIM_Cmd(TIM6,ENABLE);        //设置CEN位,使能TIM6                 

}

void RCC_Init(void)

{

    RCC_DeInit();

    RCC_HSEConfig(RCC_HSE_ON);

    while(RCC_WaitForHSEStartUp()==ERROR);

    RCC_HCLKConfig(RCC_SYSCLK_Div1);

    RCC_PCLK2Config(RCC_HCLK_Div16);

    RCC_PCLK1Config(RCC_HCLK_Div16);

    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_8);

    RCC_PLLCmd(ENABLE);

    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);                          //等待PLL工作

    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    while(RCC_GetSYSCLKSource()!=0x08);                           //判断是否PLL是系统时钟

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);

}

void TIM6_INTERRUPT(void)

{

    while(TIM_GetFlagStatus (TIM6,TIM_FLAG_Update )!=RESET)

    {

      TIM_ClearFlag (TIM6,TIM_FLAG_Update);

      GPIO_WriteBit(GPIOC,GPIO_Pin_1, (BitAction) (1- GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_1)));      //LED亮灭反转

    }

}

int main(void)

{

    GPIO_Config();

    TIM6_Init();

    RCC_Init();

    while(1)

    {

        TIM6_INTERRUPT();

    }

 

}


关键字:STM32  基本定时器 引用地址:STM32--基本定时器的应用

上一篇:STM32-AHB、APB1、APB2的使(失)能函数
下一篇:STM32——GPIO详细配置

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

stm32成长记之定时器时间计算
假设 系统时钟是72Mhz,TIM1 是由PCLK2 (72MHz)得到,TIM2-7是由 PCLK1 得到 关键是设定 时钟预分频数,自动重装载寄存器周期的值 /*每1秒发生一次更新事件(进入中断服务程序)。RCC_Configuration()的SystemInit()的 RCC- CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2表明TIM3CLK为72MHz。因此,每次进入中 断服务程序间隔时间为 时间=1/频率×次数 ((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒 */ 定时器的基本设置 1、 TIM
[单片机]
STM32仿真器运行正常,脱离仿真器后无法运行
调试STM32的程序时,发现程序在仿真器环境下运行一切OK,但是固化程序后,程序在完成初始化后就不运行了。 参照网上一些朋友说的检查复位电路、晶振电路、boot0和boot1管脚电平等等都是正常的。 最后发现是由于调试信息引起的:在程序仿真过程中,使用了printf对数据进行打印调试信息,程序运行到printf函数后就不运行了,将调试信息删除后,程序运行正常。 希望对大家能有帮助。
[单片机]
STM32_DCMI
1:DCMI简介 DCMI是STM32F4芯片自带的一个数字摄像头接口,该接口是一个同步并行接口,能够接受外部8位、10位、12位、14位CMOS摄像头模块发出的高速数据流 可支持的数据格式: YCbCr4:2:2 RGB565逐行视频 压缩数据 (JPEG) 2:DCMI功能概述 数字摄像头接口是一个同步并行接口,可接收 高速(可达 54 MB/s)数据流 。该接口包含多 达 14 条数据线 (D13-D0) 和一条像素时钟线 (PIXCLK)。像素时钟的极性可以编程,因此可 以在像素时钟的上升沿或下降沿捕获数据。 这些数据被放到 32 位数据寄存器 (DCMI_DR) 中,然后通过通用 DMA 进行传输。 图
[单片机]
STM32_DCMI
STM32学习之:定时器中断
定时器中断   STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器。在本章中,我们将利用 TIM3 的定时器中断来控制 DS1 的翻转,在主函数用 DS0 的翻转来提示程序正在运行。选择难度适中的通用定时器来介绍。 1、 STM32 通用定时器简介   STM32 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器(CNT)构成。STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。STM32 的每个通用定时器都是完全独立的,
[单片机]
STM32 DHT11串口打印源程序
1.硬件准备: USB转TTL工具一个 核心板STM32F103C8T6 DHT11传感器 2.软件准备: 串口调试助手 2.硬件连线 USB转TTL的RX----32板子上的PA9 USB转TTL的TX----32板子上的PA10 DHT11的DAT连接PB14 3.程序源码 #include dht11.h ////////////////////////////////////////////////////////////////////////////////// #include delay.h //////////////////////////////////////////////////////
[单片机]
<font color='red'>STM32</font> DHT11串口打印源程序
STM32之位带操作
  Cortex-M3 支持了位操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。   在 CM3 支持的位带中,有两个区中实现了位带。   其中一个是 SRAM 区的最低 1MB 范围, 0x20000000 ‐ 0x200FFFFF(SRAM 区中的最低 1MB);   第二个则是片内外设区的最低 1MB范围, 0x40000000 ‐ 0x400FFFFF(片上外设区中的最低 1MB)。   这两个区中的地址除了可以像普通的 RAM 一样使用外,它们还都有自己的 位带别名区 ,位带别名区把每个比特膨胀成一个 32 位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。   CM3 使
[单片机]
STM32之程序如何防止堆栈溢出
近日为某个项目写了个草稿程序,即非正式程序,后来发现老是进入hardfaulthandler,原来是堆栈溢出,后仔细查看发现函数调用纵深太深,最多的时候可保持7个函数在堆栈中调用。 因此有心得如下: 一、函数调用不要纵深太深,即以下模式: main() { fun1(); } fun1() { fun2(); } fun2() { fun3(); } fun3() { fun4(); } fun4() { fun5(); } fun5() { fun6(); } fun6() { fun7(); } 这样子main函数要调用fun1函数完成某个功能,则要一直调到fun7为止,才能完成。这样导致堆栈中
[单片机]
使用BSRR和BRR寄存器直接操作STM32的I/O端口
STM32的每个GPIO端口都有两个特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'。 GPIOx_BSRR的高16位中每一位对应端口x的每个位,对高16位中的某位置'1'则端口x的对应位被清'0';寄存器中的位置'0',则对它对应的位不起作用。 GPIOx_BSRR的低16位中每一位也对应端口x的每个位,对低16位中的某位置'1'则它对应的端口位被置'1';寄存器中的位置'0',则对它对应的端口不起作用。 简单地说GPIO
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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