1. //TIM3 分频
  2. #define TIM3_DIV1 (1-1)
  3. #define TIM3_DIV18 (18-1)
  4. #define TIM3_DIV72 (72-1)
  5.  
  6. //*************************************
  7. // 函数名:TIM3_NVIC_Configuration
  8. // 描述 :TIM3中断优先级配置
  9. // 输入 :无
  10. // 输出 :无
  11.  
  12. //*************************************
  13. void TIM3_NVIC_Configuration(void)
  14. {
  15. NVIC_InitTypeDef NVIC_InitStructure;
  16.  
  17. NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //选择中断通道
  18. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占式优先级别值
  19. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应式中断优先级别值
  20. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //中断使能值
  21. NVIC_Init(&NVIC_InitStructure); //根据上述值初始化中断级别
  22. }
  23. //*************************************
  24. // 函数名称:TIM3_BASEInit
  25. // 函数功能:初始化TIM3 为定时模式
  26. // 入口参数:计数个数 分频数
  27. // 出口参数:无
  28. // 返回值 :无
  29. //***************************************
  30. void TIM3_BASEInit(uint16_t Tcon,uint16_t psc)
  31. {
  32.  
  33. RCC->APB1ENR |= 1<<1; //定时器3时钟使能
  34. TIM3->CR1 |= 1<<7 ; //设置自动重装载允许
  35. TIM3->CR1 &= ~(1<<4) ; //设置向上计数
  36. TIM3->ARR = Tcon ; //定时器计数次数
  37. TIM3->PSC = psc ; //设置分频数
  38. TIM3->SR &= ~0x0001; //清除溢出标志
  39. // TIM3->DIER |= 1<<6 ; //允许触发中断
  40. // TIM3->EGR |= 0X0001 ; //允许产生更新事件
  41. TIM3->DIER |= 0X0001 ; //允许更新中断
  42. TIM3->CR1 |= 0X0001 ; //允许计数
  43.  
  44. }
  45. //===系统库操作初始化TIM3=====
  46. void TIM3_BASEInitSys(int16_t Tcon,uint16_t psc)
  47. {
  48. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  49.  
  50. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  51. TIM_DeInit(TIM3); //复位定时器
  52. TIM_TimeBaseStructure.TIM_Period = Tcon; //定时器重装载值
  53. TIM_TimeBaseStructure.TIM_Prescaler = psc ; //时钟预分频
  54. TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分频
  55. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式
  56. TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); //初始化定时器的值
  57.  
  58. TIM_ClearFlag(TIM3,TIM_FLAG_Update); //清除定时器中断标志
  59. TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //使能中断
  60. TIM_Cmd(TIM3,ENABLE); //开启时钟
  61.  
  62. }
  63.  
  64. //---实例应用----
  65. //用寄存器操作
  66. TIM3_BASEInit(125,TIM3_DIV72) ; //72M/72 = 1M 125u中断一次
  67.  
  68. //用系统库操作
  69. // TIM3_BASEInitSys(125,TIM3_DIV72) ; //72M/72 = 1M 125u中断一次

STM32F103 TIM3定时器初始化程序的更多相关文章

  1. 松瀚SN8P2501 定时器初始化程序--汇编源码

    /* 松瀚 SN8P2501B 定时器初始化程序 */ INI_IRQ: ;定时器T0初始化 MOV A, #01100000b ;定时器模式Fcpu/4 16M/4/4=1M 1U计一次 B0MOV ...

  2. Linux0.11内核剖析--初始化程序(init)

    1.概述 在内核源代码的 init/目录中只有一个 main.c 文件. 系统在执行完 boot/目录中的 head.s 程序后就会将执行权交给 main.c.该程序虽然不长,但却包括了内核初始化的所 ...

  3. 松瀚SN8P2711 2722 ADC初始化程序及应用--汇编源码

    /* 松瀚 SN8P2711 2722 ADC初始化程序 及应用实例 */ INIT_ADC: MOV A, #0XB2 // 启动ADC电路 使能AIN通道 B0MOV ADM, A MOV A,# ...

  4. ARM裸板开发:04_MMU 链接地址与运行地址不一致时,(SDRAM)初始化程序地址无关码问题的分析

    ARM裸板开发过程,程序的链接地址设置为为0x30000000,而前期的启动代码以及相关硬件的初始化代码需要在内部iRAM(steppingstone,起始地址0x0)的4K中运行.链接地址与运行地址 ...

  5. 浏览器默认标签样式总结及css初始化程序(转)

    浏览器默认标签样式总结及css初始化程序   html中的大部分的标签都有一些糟糕的样式,有的是标签天然自带的,有的是浏览器默认设置的,我们在写网页时,这些默认的样式就会时不时的跳出来捣一下乱,搞得我 ...

  6. 浏览器默认标签样式总结及css初始化程序

    html中的大部分的标签都有一些糟糕的样式,有的是标签天然自带的,有的是浏览器默认设置的,我们在写网页时,这些默认的样式就会时不时的跳出来捣一下乱,搞得我们很是无奈.所以成手在写css样式时,一般都会 ...

  7. TCP定时器 之 重传/延迟ACK/保活 定时器初始化

    创建socket时会创建传输控制块,之后调用初始化函数对控制块进行初始化,其中包括对定时器的初始化,tcp会调用tcp_init_xmit_timers函数来初始化这些定时器,本文将详细分析tcp_i ...

  8. STM32F103之定时器学习记录

    /==============翻译STM32F103开发手册定时器部分========================/ 14 高级控制计时器(TIM1和TIM8) 14.1 TIM1和TIM8介绍 ...

  9. 【单片机】CH32V103C8T6定时器3程序实验

    代码功能:每隔1毫秒进入一次定时器中断. 每隔1秒串口打印一次数据. time.c #include "time.h" #include "ch32v10x.h" ...

随机推荐

  1. Linux内核入门(六)—— __attribute__ 机制【转】

    转自:https://blog.csdn.net/yunsongice/article/details/5538020 GNU C的一大特色(却不被初学者所知)就是__attribute__机制.__ ...

  2. 『实践』Android之短信验证码(用的Mob短信验证)

    1.参考资料 Mob网站:http://www.mob.com/ Mob在Github上的例子:https://github.com/MobClub/SMSSDK-for-Android 教程:htt ...

  3. 小白学习安全测试(三)——扫描工具-Nikto使用

    扫描工具-Nikto #基于WEB的扫描工具,基本都支持两种扫描模式.代理截断模式,主动扫描模式 手动扫描:作为用户操作发现页面存在的问题,但可能会存在遗漏 自动扫描:基于字典,提高速度,但存在误报和 ...

  4. Java 连接远程Linux 服务器执行 shell 脚本查看 CPU、内存、硬盘信息

    pom.xml jar 包支持 <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch& ...

  5. Spring加载XML配置文件

    原创链接:http://www.cnblogs.com/yanqin/p/5282929.html(允许转载,但请注明原创链接) BeanFactory加载单个文件 当使用beanfactory去获取 ...

  6. java虚拟机规范(se8)——java虚拟机结构(三)

    2.6. 栈帧 栈帧用于存储数据和部分结果,同样也用于执行动态链接,返回方法的值和分派异常. 当方法被调用的时候会创建一个新的栈帧.当一个方法调用结束时,它对应的栈帧就被销毁了,不管是正常调用结束还是 ...

  7. mysql子查询 exists,not exists,all和any

    (1)实现让结果集A - 结果集B:--利用not exists,合并则可用union . exists,not exists:用于判断且获取结果集A是否存在地结果集B中! ==========结果集 ...

  8. 195 Tenth Line

    Given a text file file.txt, print just the 10th line of the file. Example: Assume that file.txt has ...

  9. 【AtCoder】ARC091

    C - Flip,Flip, and Flip...... 只有一个这一个是反面 只有一行那么除了两边以外都是反面 否则输出\((N - 2)*(M - 2)\) #include <bits/ ...

  10. java 常用面试题

    基础问题和思想:1.抽象类和接口的区别(单纯的语法区别只能给一半分,要说出来适用场景):2.hashcode()和equals()的关系:3.HashMap(Set)底层机制(用到的数据结构以及代码原 ...