博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STM8S——8位基本定时器(TIM4)
阅读量:4649 次
发布时间:2019-06-09

本文共 2479 字,大约阅读时间需要 8 分钟。

简介:该定时器由一个带可编程预分频器的8位自动重载的向上计数器所组成,它可以用来作为时基发生器,具有溢出中断功能。

主要功能:

(1)8位向上计数的自动重载计数器;

(2)3位可编程的预分配器(可在运行中修改),提供1、2、4、8、16、32、64、128这8种分频比例;

(3)中断产生:更新中断(溢出,计数器初始化)。

代码实现:

1 /* Includes ------------------------------------------------------------------*/ 2 #include "stm8s.h" 3  4 /* Private define ------------------------------------------------------------*/ 5 #define TIM4_PERIOD       124 6 /* Private variables ---------------------------------------------------------*/ 7 __IO uint32_t TimingDelay = 0; 8 /* Private function prototypes -----------------------------------------------*/ 9 void Delay(__IO uint32_t nTime);10 void TimingDelay_Decrement(void);11 static void TIM4_Config(void);12 13 /**14   * @brief  Main program.15   * @param  None16   * @retval None17   */18 void main(void)19 {20   /* TIM4 configuration -----------------------------------------*/21   TIM4_Config();    22   23   /* Insert 50 ms delay */24   Delay(50);25   }26 }27 28 /**29   * @brief  Configure TIM4 to generate an update interrupt each 1ms 30   * @param  None31   * @retval None32   */33 static void TIM4_Config(void)34 {35   /* TIM4 configuration:36    - TIM4CLK is set to 16 MHz, the TIM4 Prescaler is equal to 128 so the TIM1 counter37    clock used is 16 MHz / 128 = 125 000 Hz38   - With 125 000 Hz we can generate time base:39       max time base is 2.048 ms if TIM4_PERIOD = 255 --> (255 + 1) / 125000 = 2.048 ms40       min time base is 0.016 ms if TIM4_PERIOD = 1   --> (  1 + 1) / 125000 = 0.016 ms41   - In this example we need to generate a time base equal to 1 ms42    so TIM4_PERIOD = (0.001 * 125000 - 1) = 124 */43 44   /* Time base configuration */45   TIM4_TimeBaseInit(TIM4_PRESCALER_128, TIM4_PERIOD);46   /* Clear TIM4 update flag */47   TIM4_ClearFlag(TIM4_FLAG_UPDATE);48   /* Enable update interrupt */49   TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);50   51   /* enable interrupts */52   enableInterrupts();53 54   /* Enable TIM4 */55   TIM4_Cmd(ENABLE);56 }57 58 59 /**60   * @brief  Inserts a delay time.61   * @param  nTime: specifies the delay time length, in milliseconds.62   * @retval None63   */64 void Delay(__IO uint32_t nTime)65 {66   TimingDelay = nTime;67 68   while (TimingDelay != 0);69 }70 71 /**72   * @brief  Decrements the TimingDelay variable.73   * @param  None74   * @retval None75   */76 void TimingDelay_Decrement(void)77 {78   if (TimingDelay != 0x00)79   {80     TimingDelay--;81   }82 }
TIM4

 

转载于:https://www.cnblogs.com/Christal-R/p/7170550.html

你可能感兴趣的文章
shell脚本练习01
查看>>
WPF图标拾取器
查看>>
通过取父级for循环的i来理解闭包,iife,匿名函数
查看>>
HDU 3374 String Problem
查看>>
数据集
查看>>
[Leetcode] unique paths ii 独特路径
查看>>
HDU 1217 Arbitrage (Floyd + SPFA判环)
查看>>
IntelliJ idea学习资源
查看>>
Django Rest Framework -解析器
查看>>
ExtJs 分组表格控件----监听
查看>>
Hibernate二级缓存配置
查看>>
LoadRunner常用术语
查看>>
关于jedis2.4以上版本的连接池配置,及工具类
查看>>
记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
查看>>
mechanize (1)
查看>>
FactoryBean
查看>>
Coolite动态加载CheckboxGroup,无法在后台中获取
查看>>
如何在我们项目中利用开源的图表(js chart)
查看>>
nfs服务器工作原理
查看>>
C3P0连接池工具类使用
查看>>