做网站的一些费用,seo网站培训,山南网站制作,给学校建网站那个系统好1.查找手册时钟图#xff0c;输入12m想要通过pll得到400m的信号 2.对比pll值#xff0c;找到最近的为405#xff0c;得到pll中mdiv为127#xff0c;pdiv为2#xff0c;sdiv为1 3.想要得到fclk400#xff0c;hclk100#xff0c;pclk50#xff0c;对比分频比例#xff0…1.查找手册时钟图输入12m想要通过pll得到400m的信号 2.对比pll值找到最近的为405得到pll中mdiv为127pdiv为2sdiv为1 3.想要得到fclk400hclk100pclk50对比分频比例得到hdivn为2pdivn为1 4.hclk要为fclk/4要使得camdivn【9】为0此时回到3再回到2会得到正确的分频 5.经过上部分操作pclk为50mpclk信号会通向有pwm脉冲调制
6.手册pwm框图 7.查看pwm驱动蜂鸣器图需要高电平使得蜂鸣器工作 8.将gpb0选择为tout0引脚对应定时器0 9.500hz一个周期2ms占空比50%则tcntb0设置为2000通过一个信号减一次则tcmpb0比较器到达比较器的数值电平反转设置为1000其内部功能也要按需相应设置例如一般为低电平到高电平此次为确保停止时关闭应开启输出变相变为高电平到低电平停止时则为低电平蜂鸣器不会继续响 10.因为想要500hz的信号而计数器为2000则通过mux后的信号为2000*500 1Mhz最开始的输入为12mhz通过一个预分频器八位再通过一个四位分频器和选通门降为1mhz逆向推理由四位到预分频假如为1/4则通过预分频器的信号为4这样50要变为4分频不为整数我们最好要整数排除然后对比四位分频器和预分频器得到合理的数据四分频器为1/2预分频器为25此时因为预分频器防止为0导致错误会自动加1所以设置为24即可。这样50mhz通过预分频1/25为2再过四位分频1/2为1四分频的1/2通过选通门设置1/2通路之后每通过一个信号计数减一次一兆里面一兆个信号2000个信号转换一次电平一兆就可以有500次转换电瓶平所以得到500赫兹的信号 便可有500hz的信号通过tout0引脚再加上之前设置好的gpb0转tout0引脚则可使蜂鸣器工作 11.实现代码
#include s3c2440.h//pll
void clk_init(void)
{// 配置 F H P 1 4 8CLKDIVN (2 1) | (1 0);// 配置Fclk为400MMPLLCON (127 12) | (2 4) | (1 0);
}void pwm_init(void)
{//配置GPB0引脚功能为TOUT0GPBCON ~(0x3 0);GPBCON | (0x2 0);TCFG0 ~(0xff 0);TCFG0 | (24 0); //预分频值 25TCFG1 ~(0xf 0); //分频 1/2TCNTB0 4000;TCMPB0 1000;TCON ~(1 4); //关闭死区TCON | (1 3); //自动重载TCON | (1 2); //变换极性TCON | (1 1); //更新CMP和CNTTCON | (1 0); //启动定时器TCON ~(1 1); //清除更新位
}void pwm_stop(void)
{TCON ~(1 0);
}void main(void)
{clk_init();pwm_init();}