STC国芯之STC8H1k08

本文主要讨论了在使用STC8H单片机时,如何配置时钟源、进行时钟分频以及理解PWM的工作原理,特别强调了系统时钟由宏定义MAIN_Fosc决定,同时介绍了PWM的初始化和占空比更新函数的重要性。
摘要由CSDN通过智能技术生成

国芯的论坛:国芯论坛 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

第一,时钟 

        参考STC8H的数据手册,第6章节系统时钟部分有介绍,系统时钟有3个时钟源可以选择。

        涉及到寄存器系统时钟选择寄存器(CLKSEL)和时钟分频寄存器(CLKDIV)。我在项目里也是这么配置的,但是实际发现这个的设置和最终输出的时钟频率好像并无联系,系统时钟是由这里的宏定义所决定的。

        所以这里时钟源设置和分频以及最后的系统时钟设置MAIN_Fosc宏定义我是没有搞懂的。

        最后得出结论,是我自己得出的,并不一定对哈,前面两个寄存器设置的只是时钟源以及决定最终能否输出这么大的系统时钟频率,最主要的还是上图宏定义所设置的主时钟频率。 

第二,定时器

第三,PWM

        STC8H1K08只有16位高级PWM,没有高级PWM新增硬件移相功能和高速高级PWM,手册中也有说明。

        STC的PWM设计的很高级,PWM分为两组,第一组是PWMA(PWM1P/PWM1N、PWM2P/PWM2N、PWM3P/PWM3N、PWM4P/PWM4N) ,第二组是PWMB(PWM5P/PWM5N、PWM6P/PWM6N、PWM7P/PWM7N、PWM8P/PWM8N)。

        看下图,这里说明的PWM2的脉冲输出负极(仅仅举例)和PWM2的脉冲输出正极,这个意思是此端口配置成PWM输出的话只可以是输出低(正)或者输出高(高)。

        有的单片机是可以配置这个端口PWM输出高或者低,而不仅仅是只能是输出高或者低。

        所以STC这种设计也是很巧妙的,两个端口互补对称PWM输出。

   

         参考PWM的Ddmo,初始化完成之后发现并不能点亮小灯,或者点亮小灯之后给一个信号pwm占空比无法改变。最后发现是需要写入,有一个函数可以把PWM占空比值更新。

// 函数: UpdatePwm
// 描述: PWM占空比更新程序.
// 参数: PWM: PWM通道/组号, PWMx结构参数,请参考PWM.h里的定义.
// 返回: none.
// 版本: V1.0, 2012-10-22
//========================================================================
void UpdatePwm(u8 PWM, PWMx_Duty *PWMx)

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值