访问电脑版页面

导航:老古开发网手机版单片机STM8S单片机

STM8S的定时器周期中断时钟测试系统

导读:
关键字:
STM8S,定时器,时钟,

  1 问题

    在下面的测试程序中,如果将Init_CLK()函数中的 CLK_CKDIVR |= 0x08;去掉’|‘,则TIM1的功能实现跟预设定相同(10ms中断一次),但是TIM2的PWM频率就变高了;如果加上,则TIM2的功能实现跟预设定相同(产生1Hz的PWM),但是TIM1的周期就变长了;

    尝试了很多测试,均无效(买的开发板和另一块gs自画板测试也都一样)。

  2 尝试

    因为STM8S默认使用内部16M高速RC振荡器,且8分频,则系统启动主时钟为2M。即CLK_CKDIVR = 0X18;,如果再去赋值CLK_CKDIVR |= 0X08; 则主时钟还是不变即0X18,但是如果赋值为CLK_CKDIVR = 0X08;,则主时钟就会改变,变为8M。但是TIM1和TIM2的Fmaster时钟应该是一样的,这样的赋值应该会对TIM1和TIM2都会产生影响,但是两个赋值不同,实现功能的配置正确,而总只有一个能按预设定工作,这到底是怎么回事呢?

    发现设置为CLK_CKDIVR = 0X08时(8M),TIM1能按预设定工作,而TIM2的工作频率却明显快了,像是快了一倍,带着这个发现,我就将现在的TIM2的Fmaster时钟频率当做为TIM1的一倍,即16M,再去重新配置TIM2的寄存器,再编译、下载进单片机,居然和TIM1实现的功能相同了。这又到底是怎么回事呢?难道TIM2的Fmaster时钟总是TIM1的Fmaster时钟的一倍吗?又去尝试几种不同的CLK_CKDIVR(当然则TIM1的Fmaster频率不能超过8M)。

    接下来测试了 CLK_CKDIVR = 0X10;(4M), CLK_CKDIVR = 0X18;(2M)均是如此。是不是猜想正确了,还是想不明白是怎么回事。看着STM8S的时钟树怎么也想不明白。

  3 测试程序
STM8S的定时器周期中断时钟测试系统
STM8S的定时器周期中断时钟测试系统
STM8S的定时器周期中断时钟测试系统

来源:网络整理   作者:city_prolove  2018/4/16 9:10:00
栏目: [ STM8S单片机]

相关阅读

如何在STM8S单片机上实现一键式的开关机功能

STM8S的通用异步收发器UART的原理解析

STM8S单片机开发的过程及方法

STM8S单片机外部中断唤醒

STM8S的GPIO主要功能以及操作方法解析

stm8s开发(六) EXIT的使用:做一个外部中断的按钮!

如何利用STM8S单片机实现一键式的开关机功能

STM8SF103单片机的ADC采样电压设计

STM8S单片机通过蓝牙与智能手机实现串口通讯的设计

STM8s(3) GPIO引脚功能设置

STM8S_001_GPIO基础知识

STM8S系列单片机是如何控制机器人的

STM8S电源管理-重点活跃停机模式

STM8S 与 STM32F IO口输出速率测试

STM8S外部中断注意

ST推出基于新一代STM8内核的STM8S系列微控制器,面向工业应用

ST全新STM8S问世

基于stm8s103k3单片机串口UART的正确使用分享

基于STM8S208RB的变频空调控制器的设计

三分钟看懂stm8s单片机实现多通道转换