历史上的今天
返回首页

历史上的今天

今天是:2024年11月18日(星期一)

正在发生

2019年11月18日 | STM8S——8位基本定时器(TIM4)

2019-11-18 来源:51hei

简介:该定时器由一个带可编程预分频器的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  None

16   * @retval None

17   */

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  None

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

37    clock used is 16 MHz / 128 = 125 000 Hz

38   - 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 ms

40       min 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

42    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 None

63   */

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  None

74   * @retval None

75   */

76 void TimingDelay_Decrement(void)

77 {

78   if (TimingDelay != 0x00)

79   {

80     TimingDelay--;

81   }

82 }

推荐阅读

史海拾趣

CW Industries公司的发展小趣事

CW Industries公司一直坚持从原材料到最终成品的完全一体化制造流程。这一制造模式使得公司能够对产品质量进行更严格的控制,并确保每一个生产环节的优化。为了进一步提高生产效率,CW Industries还引进了自动化设备,使得制造过程更加高效和精确。这种对生产流程的精细管理,让CW Industries在电子行业中树立了良好的口碑,并为公司的持续发展提供了有力保障。

Fedco_Batteries公司的发展小趣事

随着公司业务的不断拓展,Fedco_Batteries始终将产品质量放在首位。公司引进了先进的生产设备和检测设备,建立了严格的质量管理体系。每一块电池在出厂前都要经过多道严格的质量检测,确保产品的稳定性和可靠性。这种对品质的坚持,让Fedco_Batteries的电池在市场上赢得了良好的口碑,越来越多的客户选择了他们的产品。

Electronicon Kondensatoren GmbH公司的发展小趣事

1992年,ELECTRONICON成立了卷绕电容器部门,并专注于该领域的研发与生产。该部门拥有238名员工,致力于为客户提供高品质的照明、电机和电力电容器产品。随着部门的不断发展壮大,ELECTRONICON在电容器领域的市场份额也得到了进一步提升。

Excelitas公司的发展小趣事

随着技术的不断成熟和市场的扩大,Excelitas公司开始寻求全球扩张。公司先后在北美、欧洲和亚洲设立了研发中心和生产基地,以更好地服务全球客户。在全球扩张的过程中,Excelitas注重本土化战略,积极与当地企业合作,共同开拓市场。这一策略不仅帮助公司快速融入当地市场,还促进了公司业务的持续增长。

中环(Central)公司的发展小趣事

2019年,中环公司发布了210mm尺寸G12超大硅片“夸父”系列产品。这一创新产品凭借其高效、高质的特点,迅速获得了市场的认可。G12超大硅片的推出不仅引领了光伏材料的发展方向,也进一步巩固了中环在光伏领域的领先地位。

Harvatek Corporation公司的发展小趣事

背景:随着电子技术的飞速发展,Hantronix始终站在技术创新的前沿。公司不断投入研发资源,致力于开发具有自主知识产权的新产品和技术。

发展:Hantronix成功推出了一系列创新产品,如液晶显示器、图形模块、触摸屏等,这些产品不仅性能卓越,而且设计独特,满足了市场多样化的需求。同时,公司还积极申请专利保护,确保其技术成果得到法律的有效保障。

问答坊 | AI 解惑

电子书籍PDF下载

基本电子书籍PDF档…

查看全部问答>

清华大学嵌入式培训教材

清华大学的教材,很适合初学者…

查看全部问答>

还是说说80后在工作中的优点吧

前几天跟一个在人大做老师的同学聊天,说着说着又说到了80后的问题。她对80后依然持否定态度,但是倒没有像我们通常所说的理由:80后是中国第一代独生子女,没有经历过困难时期。她从另一角度来看,这是一代用“美式鼓励教育”成长起来的,无论孩子 ...…

查看全部问答>

winCE平台下.net编程怎样访问硬件的寄存器地址?

windowsCE 5.0中使用.net做开发,怎么才能访问底层硬件的寄存器的地址呢?比如并口的读写寄存器等等,上网搜了一圈,没找到什么资料啊,这里高手云集,呵呵,知道的兄弟告诉一声 感激不尽啊…

查看全部问答>

请教一个烧录nand flash的问题

开发系统是基于S3C2440的。我已经编译好了bootloader,kernel和yaffs2,现在是用bootloader去烧。希望能用专用的flash编程器烧录。有哪位高人有过类似的经验? 其中有以下问题: 1. 对于kernel来说因为后面的spare 64字节放有ECC校验位,这个东西 ...…

查看全部问答>

mc39i 连线问题

我用 mc39i modem 其中31管脚 /pd 发现总是在0.24v--2.24v波动,该管脚为 0v是给modem断电。 我把这个管脚的控制端用6n137 隔离,输入1 断电,输入0 不断电。总是出现  rascs_disconnected ecode 633,上网查为 拨号网络网络由于设备 ...…

查看全部问答>

送分!

坐沙发者即送分!…

查看全部问答>

windows mobile下如何开发数据库(用vc2005环境),需要那些?

windows mobile下如何开发数据库(用vc2005环境),需要那些? access即可…

查看全部问答>

请教并口测试问题

主板上面的并口,在不接实际并口设备(比如打印机等)应该怎么去测试啊?测试的原理是什么?如何才算是PASS,在DOS下开发并口测试程式应该怎么样去实现啊?小弟没入门需要高手点拨,感激啊!~~~~…

查看全部问答>

基于 LM3S的图形驱动库开发之硬件介绍

大家好,首先在这个地方向大家致歉,因为个人原因,11月份突然十分忙碌。所以在上旬的时候没有抽出时间写开发文档。心中万分抱歉。。。这次我要和大家一起分享的是TI的LM3S上图形驱动库的开发。现在在网络上,用ti外设驱动库的很多,但是在网上基 ...…

查看全部问答>