原作者:http://www.eeworld.com.cn/mcu/article_2016082828940.html

配置流程:

 

1:系统时钟初始化,包括系统时钟和要开放的IO口或者功能的时钟配置。
2:IO口初始化,包括引脚,速率,输入输出模式等。
3:NVIC 中断向量配置 ,中断向量基地址和优先级的配置。
4:TIM3初始化:包括自动重装值,分频值,计数模式,使能TIM中断,使能TIM3外设
5:中断处理函数:注意清除TIMx的中断待处理位
注意:
1:RCC初始化要使能或者失能 APB1 外设时钟。
2:中断处理函数:注意清除TIMx的中断待处理位 TIMx_SR寄存器
3:关于时钟:初始化RCC时使用SystemInit()函数时默认的是AHB不分频,即HCLK等于SYSHCLK,APB2不分频,APB1为HCLK 2分频而定时器3时钟使能在RCC_APB1ENR寄存器中定义,因此TIM3时钟为36M

原程序为:
#include"stm32f10x.h"
#include"stm32f10x_tim.h"

#define LED0_OFF  GPIO_SetBits(GPIOA,GPIO_Pin_8)// LED0关
#define LED0_ON GPIO_ResetBits(GPIOA,GPIO_Pin_8)//LED0开

u16 i=0;

//初始化IO端口
void IO_Configuart(void)   
{
    GPIO_InitTypeDef GPIO_InitStructure;                                       //定义 GPIO_InitStructure为    GPIO_InitTypeDef结构体类型
    //LED0
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;                               //引脚选择
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;           //50MHz速率
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;           //推挽输出
    GPIO_Init(GPIOA,&GPIO_InitStructure);                                 //初始化

}

//复位和系统时钟控制
void RCC_Configuare(void)
{
    SystemInit();//频率设定有system_stm32f10x.c文件中的宏定义 开放某个宏 当调用SystemInit()时即可设置好频率
    RCC_ClockSecuritySystemCmd(ENABLE);//使能或者失能时钟安全系统

//使能GPIOA,GPIOD端口时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//使能或者失能 APB1 外设时钟 
//    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);//允许总线CLOCK,在使用GPIO之前必须允许相应的端口时钟
    /*    也可以写为RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE);   更加简洁*/
}

//NVIC设置 系统中断管理
void NVIC_Configuare(void)
{
    NVIC_InitTypeDef   NVIC_InitStructure;
    NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);//设定中断向量表基址0x08000000
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);// 先占优先级0位  从优先级4位

//使能TIM3中断
    NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;                       //TIM3中断 
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x0F;    //先占优先级0位,从优先级4位
    NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x0F;                //
    NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}
//初始化TIM3 1ms 定时
void TIM3_Configuare(void)
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    //TOUT=ARR*(PSC+1)/Tclk   ARR=10 PSC=3599 Tclk=36M  TOUT=0.001s=1ms
    TIM_TimeBaseStructure.TIM_Period = 10;                  //设置在下一个更新事件装入活动的自动重装载寄存器周期的值     计数到10为1ms
    TIM_TimeBaseStructure.TIM_Prescaler =(7200-1);    //设置用来作为TIMx时钟频率除数的预分频值  这里是7200分频    72M=72000000 ; 72000000 /7200=10000;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;         //设置时钟分割:TDTS = Tck_tim
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;    //TIM向上计数模式
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
    
    TIM_ITConfig(TIM3,TIM_IT_Update|TIM_IT_Trigger,ENABLE); //使能或者失能指定的 TIM 中断 
    TIM_Cmd(TIM3, ENABLE);  //使能TIMx外设

}

int main (void)
{

RCC_Configuare();
    IO_Configuart();
    NVIC_Configuare();
    TIM3_Configuare();
    LED0_OFF;
    while(1)
    {
    
    }
            
}

//TIM3中断处理函数
void TIM3_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET) //检查指定的 TIM 中断发生与否 
    {
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源 
        i++;
        if(i==1000)
        {
            LED0_ON;

}
        if(i==2000)
        {
            LED0_OFF;

i=0;
        }    
    }
}

stm32单片机时钟中断的配置的更多相关文章

  1. STM32时钟系统的配置寄存器和源码分析

    一.时钟系统 概述 时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令,时钟系统就是CPU的脉搏,决定cpu速率. STM32有多个时钟来源的选择,为什么 STM32 要有多个时钟源呢 ...

  2. 关于STM32单片机的IAP实现

    基于STM32F103单片机的IAP实现(虽然该篇文章不会详细写出实现细节,但是会从一个全局的角度讲述,实际的实现细节只需根据datasheet即可完成). 一.基础概念 什么是IAP?IAP即在应用 ...

  3. STM32为什么必须先配置时钟

    首先,任何外设都需要时钟,51单片机,stm32,430等等,因为寄存器是由D触发器组成的,往触发器里面写东西,前提条件是有时钟输入. 51单片机不需要配置时钟,是因为一个时钟开了之后所有的功能都可以 ...

  4. STM32单片机应用与全案例实践 /stm32自学笔记 第二版 pdf

    STM32单片机应用与全案例实践pdf https://pan.baidu.com/s/16WrivuLcHvLTwS__Zcwl6Q 4rj3 stm32自学笔记 第二版 pdf https://p ...

  5. 使用 VSCode 开发调试 STM32 单片机尝试

    使用 VSCode 开发调试 STM32 单片机尝试 本文记录基于 Windows + DAP-Link 开发 STM32F103C8T6 的实践过程,其他操作系统或芯片应该也只是大同小异的问题. 注 ...

  6. 基于STM32单片机的简单红外循迹的实现

    初步接触STM32,采用两路红外传感器实现小车循迹,稍显简略,如有不好的地方,欢迎大家指点改正

  7. 龙邱STM32单片机用J-LINK下载无法被识别的解决方法

    问题如下: 按照正常步骤使用keil5给龙邱的stm32下载程序,SWD下载方式提示no cortex-m sw device found,JTAG方式提示no cortex-m device fou ...

  8. STM32的外部中断配置及使用

    STM32的外部中断配置及使用 配置1:GPIO: 配置外部中断为输入模式: 配置2:EXTI: 配置外部中断线和触发模式: 配置3:NVIC: 配置外部中断源和中断优先级: 需要注意的是:RCC_A ...

  9. STM32单片机在Keil5下仿真的问题解决及GPIO口初始化、使用

    STM32单片机在Keil5下仿真的问题解决及GPIO口初始化.使用 最近看了视频,里面有仿真,可以清楚看到GPIO口的数据变化,也想尝试下,DUG时却出现*** error 65: access v ...

随机推荐

  1. unity 获取物体尺寸

     unity3d中获得物体的size 以size的x方向为例 1:gameObject.renderer.bounds.size.x;//这个值的结果真实反应出有MeshRenderer这个组件的 ...

  2. 关于obj.currentStyle.property、window.getComputedStyle(obj,null).property、obj.style.property的理解

    首先是obj,style.property 我一直用这个obj.style.property这个属性来修改内联和外联的obj属性,但是从网上看到了obj.style.property居然只能读取内嵌的 ...

  3. 微信小程序从零开始开发步骤(二)创建小程序页面

    上一章注册完小程序,添加新建的项目,大致的准备开发已经完成,本章要分享的是 要创建一个简单的页面了,创建小程序页面的具体几个步骤: 1. 在pages 中添加一个目录 选中page,右击鼠标,从硬盘打 ...

  4. zendiscovery 的Ping机制

    ping是集群发现的基本手段,通过在网络上广播或者指定ping某些节点获取集群信息,从而可以找到集群的master加入集群.zenDiscovery实现了两种凭机制:广播与单播.本篇将详细分析一些这M ...

  5. dom4j解析xml文件和字符串

    转自:http://www.cnblogs.com/black-spike/p/9776180.html 最近在工作中,需要调别的接口,接口返回的是一个字符串,而且内容是xml格式的,结果在解析jso ...

  6. Day4晚笔记

    数据结构 并查集:捆绑两个点的信息,判断对错 倍增:LCA, 字符串 hash,模拟, 最小表示法 给定一个环状字符串,切开,使得字符串的字典序最小 图和树 割点,割边,强联通分量 点双联通分量 (把 ...

  7. Codeforces 451 E. Devu and Flowers(组合数学,数论,容斥原理)

    传送门 解题思路: 假如只有 s 束花束并且不考虑 f ,那么根据隔板法的可重复的情况时,这里的答案就是 假如说只有一个 f 受到限制,其不合法时一定是取了超过 f 的花束 那么根据组合数,我们仍然可 ...

  8. 【习题 7-2 UVA-225】Golygons

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 暴力枚举每次走哪里就好. 用一个二维数组来判重.(数据里,要求不能经过一个点两次->但路径可以相交 然后再用一个flag数组, ...

  9. SSO单点登录学习总结(3)—— 基于CAS实现单点登录实例

    第一: 本demo在一个机器上实现(三个虚拟主机),来看SSO单点登录实例(我们可以布到多个机器上使用都是同一个道理的),一个服务器主机,和两个客户端虚拟主机 [html] view plaincop ...

  10. Windows环境下ARM集成开发环境的搭建与使用

    Windows环境下能够使用Eclipse IDE for C/C++ Developers来搭建ARM开发环境 本文地址:http://blog.csdn.net/u011833609/articl ...