本帖最后由 zhuyjgh 于 2010-10-27 11:15 编辑
我用到10k到40k,,
40k的时候有7百左右的分辨率,,够用了~~
另外试了下12.5M,,哈哈,,有点变形,,不过还好~~
/********************************工程文件说明*******************************/
/*FileName:main.c */
/*Author:烛光 */
/*Version:v2.1 */
/*Data:2010年07月25日 */
/*Description:主要包含主循环程序 */
/*Function List: */
/* 1.main 主程序 */
/* 2. */
/* 3. */
/* 4. */
/*History: */
/* 4.烛光 2010.08.10 v2.1 增加主机外部加减速 */
/* 3.烛光 2010.06.25 v2.0 增加主机放料模拟量 */
/* 2.烛光 2010.01.25 v1.0 初步完成设计 */
/* 1.烛光 2009.12.20 v0.0 开始设计 */
/*Copyright (c) 2010 烛光 All Rights Reserved */
/***************************************************************************/
/***********************************硬件接口说明****************************/
/***********************************头文件包含******************************/
#include <stdio.h>
#include "NUC1xx.h"
#include "Driver\DrvSYS.h"
#include "Driver\DrvGPIO.h"
/************************************符号定义*******************************/
/************************************变量定义*******************************/
/************************************函数声明*******************************/
void deviceInit(void);
void delay_1ms(uint32_t i);
void pwm0Init(void);
/***************************************************************************/
///////////////////////////////////程序部分//////////////////////////////////
/***************************************************************************/
int32_t main(void)
{
deviceInit();
while(1)
{
DrvGPIO_ClrBit(E_GPB,0);
delay_1ms(500);
DrvGPIO_SetBit(E_GPB,0);
delay_1ms(500);
}
}
void deviceInit(void)
{
//系统时钟初始化
DrvSYS_UnlockProtectedReg();
SYSCLK->PWRCON.XTL12M_EN = 1;
DrvSYS_Open(50000000);
DrvSYS_LockProtectedReg();
//端口配置
DrvGPIO_Open(E_GPB,0, E_IO_OUTPUT);
//pwm初始化
pwm0Init();
}
void pwm0Init(void)
{
///*
SYSCLK->CLKSEL1.PWM01_S=0x02;//pwm使用PLL50M时钟
SYSCLK->APBCLK.PWM01_EN=1;//使能pwm0时钟
PWMA->CSR.CSR0=0x04;//PWM定时器0时钟源1除频
PWMA->PPR.CP01=0x01;//预分频2,,郁闷,,不能直通,,最小是2分频
PWMA->PCR.CH0INV=0;//pwm反向关闭
PWMA->PCR.DZEN01=0;//死区防治关闭
PWMA->PCR.CH0MOD=1;//自动重载模式
PWMA->PCR.CH0EN=0;//pwm使能关闭
PWMA->CMR0=0x133;//CMR
PWMA->CNR0=0x269;//CNR,,这个最小是1,,加上PPR,,50M的频率就成了12.5M了~~
PWMA->PIER.PWMIE0=0;//禁止中断
PWMA->POE.PWM0=1;//使能pwm输出
SYS->GPAMFP.PWM0_AD13=1;//引脚配置为pwm
GPIOA->PMD.PMD12=0x01;//引脚配置为输出
PWMA->PCR.CH0EN=1;//pwm使能开启
//*/
//DrvPWM_Open();
//DrvGPIO_InitFunction(E_FUNC_PWM01);
}
void delay_1ms(uint32_t i)
{
uint32_t j;
for(;i>0;i--)
{
for(j=0;j<4600;j++);
}
}
|