打印

试了下pwm,,满足我的需要了,,哈哈~~

[复制链接]
1609|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuyjgh|  楼主 | 2010-10-27 10:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PWM, IO, gp, ni, pi
本帖最后由 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++);
}
}

相关帖子

沙发
zhuyjgh|  楼主 | 2010-10-27 10:53 | 只看该作者
工程文件  图

key2pwm.jpg (15.93 KB )

key2pwm.jpg

使用特权

评论回复
板凳
formatmd| | 2010-10-27 14:42 | 只看该作者
等会儿试试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

335

帖子

0

粉丝