历史上的今天
今天是:2025年01月29日(星期三)
2019年01月29日 | STC12C5A60S2系列单片机PCA时钟源设置
2019-01-29 来源:eefocus
在使用STC12C5A60S2系列单片机PCA输出PWM时需要设置PCA时钟源,如以下代码
void PCA_Init(void)
{
CCON = 0; //PCA初始化
CMOD = 0x00; //空闲时不计数,不产生中断,时钟源为Sysclk/12,PWM频率大约为4KHz
CL = 0x00; //PCA低8位清零
CH = 0x00; //PCA高8位清零
CCAPM0 = 0x42; //8位PWM模式,无中断
CCAP0H = 0xc0; //PWM0占空比(调节此处值调节PWM占空比)
CCAP0L = 0xc0; //PWM0占空比(调节此处值调节PWM占空比)
CCAPM1 = 0x42; //8位PWM模式,无中断
CCAP1H = 0x40; //PWM1占空比(调节此处值调节PWM占空比)
CCAP1L = 0x40; //PWM1占空比(调节此处值调节PWM占空比)
CR = 1; //启动PCA计数器
}
其中CMOD寄存器结构如下图所示:

其中CPS2、CPS1、CPS0为PCA计数脉冲源选择控制位。
PCA计数脉冲选择具体如下所示:
CPS2 CPS1 CPS0 选择PCA/PWM时钟源输入
0 0 0 0,系统时钟/12,SYSclk/12
0 0 1 1,系统时钟/2,SYSclk/2
0 1 0 2,定时器0的溢出脉冲。由于定时器0可以工作在1T模式,所以达到记一个时钟就溢出,从而达到最高频率CPU工作时钟SYSclk。通过改变定时器0的溢出率,可以实现可调频率的PWM输出。
0 1 1 3,ECI/P1.2(或P4.1)脚输入的外部时钟(最大速率 = SYSclk/2)
1 0 0 4,系统时钟,SYSclk
1 0 1 5,系统时钟/4,SYSclk/4
1 1 0 6,系统时钟/6,SYSclk/6
1 1 1 7,系统时钟/8,SYSc/8
史海拾趣
|
有朋友问我ARM7有ARM9的区别,在此进行解答。 ARM7内核是0.9MIPS/MHz的三级流水线和冯·诺伊曼结构; ARM9内核是5级流水线,提供1.1MIPS/MHz的哈佛结构。 arm7没有mmu,arm720T是MMU的;arm9是有mmu的,arm940T只有Memory protection unit.不是 ...… 查看全部问答> |
|
如何把snetcfg.exe 和 net.inf net_m.inf driver.sys 四个文件以资源的形式放到一个exe程序中 ?? 大侠们帮忙?? 如何把snetcfg.exe 和 net.inf net_m.inf driver.sys 四个文件以资源的形式放到一个a.exe程序中 ?? 这样我就可以通过控制a.exe 文件来安装 卸载 我的driver.sys 驱动程序。 我不希望用户看到我的snetcfg.exe 和 net.inf net_m.inf&n ...… 查看全部问答> |
|
我采用的芯片是CY7c68013A,使用以下方法后就出现了关机后是后一步,没有关闭电涛,当然,重启也是一样不能关闭电源,其它的应该什么都关闭了. /******************************************************************************************** 电 ...… 查看全部问答> |
|
针筒式点胶正被喷射式点胶所替代。所谓的喷射(jetting),属于新技术,它采用喷嘴式替代针筒,解决了许多难题。Jetting喷嘴可在需要进行底部填充的器件上方进行点胶,无需到达其顶面以下的位置。Jetting喷嘴在整个电路板上方沿x、y方向运动,而无需垂直运 ...… 查看全部问答> |
|
本人手上有闲置 原装TI公司的 LM3S8962 Evaluation Kit 开发板(9.9成新),和2.4寸的TFT(带触摸屏)LCD ,等一些电子元件希望和大家置换或转让或赠送。 TI的 LM3S1138(一片) LM3S608(一片)STM8S105K(两片) ISO124-DIP(两片)  ...… 查看全部问答> |
|
一、引言阵列信号处理作为数字信号处理领域的一个重要分支,广泛应用于雷达、声纳、通信、地震勘探和医用成像等众多领域;短波频段则常用于短波测向和波束合成技术。在短波频段,阵列信号处理设备通常包括短波天线阵、短波多波道接收机、后端阵列信 ...… 查看全部问答> |
|
我的 STM32 到底跑多快? 我在 STM32F103RB 的开发板上, 写如下代码: uint32_t x = 0x009CF260, y; while (1) { if (--x ==0) { x = 0x009CF260; y = 1; & ...… 查看全部问答> |




