STM8S——8位基本定时器(TIM4)
简介:该定时器由一个带可编程预分频器的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_PERIOD124 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* @briefMain program. 15* @paramNone 16* @retval None 17*/ 18 void main(void) 19 { 20/* TIM4 configuration -----------------------------------------*/ 21TIM4_Config(); 22 23/* Insert 50 ms delay */ 24Delay(50); 25} 26 } 27 28 /** 29* @briefConfigure TIM4 to generate an update interrupt each 1ms 30* @paramNone 31* @retval None 32*/ 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 counter 37clock used is 16 MHz / 128 = 125 000 Hz 38- With 125 000 Hz we can generate time base: 39max time base is 2.048 ms if TIM4_PERIOD = 255 --> (255 + 1) / 125000 = 2.048 ms 40min time base is 0.016 ms if TIM4_PERIOD = 1--> (1 + 1) / 125000 = 0.016 ms 41- In this example we need to generate a time base equal to 1 ms 42so TIM4_PERIOD = (0.001 * 125000 - 1) = 124 */ 43 44/* Time base configuration */ 45TIM4_TimeBaseInit(TIM4_PRESCALER_128, TIM4_PERIOD); 46/* Clear TIM4 update flag */ 47TIM4_ClearFlag(TIM4_FLAG_UPDATE); 48/* Enable update interrupt */ 49TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE); 50 51/* enable interrupts */ 52enableInterrupts(); 53 54/* Enable TIM4 */ 55TIM4_Cmd(ENABLE); 56 } 57 58 59 /** 60* @briefInserts a delay time. 61* @paramnTime: specifies the delay time length, in milliseconds. 62* @retval None 63*/ 64 void Delay(__IO uint32_t nTime) 65 { 66TimingDelay = nTime; 67 68while (TimingDelay != 0); 69 } 70 71 /** 72* @briefDecrements the TimingDelay variable. 73* @paramNone 74* @retval None 75*/ 76 void TimingDelay_Decrement(void) 77 { 78if (TimingDelay != 0x00) 79{ 80TimingDelay--; 81} 82 }
TIM4 【STM8S——8位基本定时器(TIM4)】
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术