金牌会员
- 积分
- 1946
- 威望
- 855
- 贡献
- 467
- 兑换币
- 557
- 注册时间
- 2012-12-3
- 在线时间
- 312 小时
- 毕业学校
- 大连理工大学城市学院
|
3#
楼主 |
发表于 2013-1-30 14:41:18
|
只看该作者
程序没贴上?第一次发帖···不好意思·····
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
static void PWM_Init(void)
{
//SB,B for ch2367
//SA,A for ch0145
PWMCTL_CON01=1; //0和1联合成16位PWM;
PWMCAE_CAE1=0; //选择输出模式为左对齐输出模式
PWMCNT01 = 0; //计数器清零;
PWMPOL_PPOL1=1; //先输出高电平,计数到DTY时,反转电平
PWMPRCLK = 0X40; //clockA不分频,clockA=busclock=16MHz;CLK B 16分频:1Mhz
PWMSCLA = 4; //对clock SA 进行2*4=8分频;pwm clock=clockA/8=1MHz;
PWMCLK_PCLK1 = 1; //选择clock SA做时钟源
PWMPER01 = 20000; //周期20ms; 50Hz;(可以使用的范围:50-200hz)
PWMDTY01 = 555; //高电平时间为1.5ms;
PWME_PWME1 = 1;
}
void Pwm01_duty(unsigned int duty)
{
PWME&= ~0x02; //禁止PWM通道1
PWMDTY01 = duty; //极性为1时,占空比= PWMDTY23/PWMPER23
PWME|= 0x02; //使能PWM通道3
}
void main(void) {
/* put your own code here */
DDRB=0X0F;
PORTB=0XFF;
PIT_init();
PWM_Init();
Delay_ms(5000);
Pwm01_duty(1555);
EnableInterrupts;
for(;;) {
_FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
} |
|