打印
[菜农助学交流]

★第四批★Doe_cn 第四帖PWM之按键控制LED的明暗程度

[复制链接]
1889|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Doe_cn|  楼主 | 2012-2-5 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Doe_cn 于 2012-2-8 23:12 编辑

说下感受吧,M0的寄存器配置挺多的,就目前来说我已经学到了不少东西。
总之感觉还是不错的,在此再次感谢大叔,李老师,九哥在我的学习过程中给予的支持与指导。
本例程的功能是当按下与GPB14相连的按键后,LED渐渐从暗到亮,达到最亮后再渐渐变暗,并不断循环,当按键松开后明亮程度不再变化。。。
 
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/
#include "NUC1xx.h"
#include "DrvGPIO.h"
/*延时函数*/
void delay_ms(uint32_t count)
{
    uint32_t i,j;
for(i = count;i > 0;i--)
     for(j = 2395;j > 0;j--);
}
/*必要端口初始化函数*/
void GPIO_Init()
{
/*将与按键相连的IO口设置为准双向口*/
DrvGPIO_Open(E_GPB,14,E_IO_QUASI);
}
/*按键扫描*/
int Key_Scan()
{
return DrvGPIO_GetBit(E_GPB,14);
}

/*PWM0初始化设置*/
void PWM0_Init()
{
/*GPA12端口初始化为PWM输出端*/
SYS->GPAMFP.PWM0_AD13 = 1;
/*PWM0时钟使能*/
SYSCLK->APBCLK.PWM01_EN = 1;
/*时钟源选择为外部时钟*/
SYSCLK->CLKSEL1.PWM01_S = 3;
/*PWM0时钟选择寄存器设置*/
PWMA->CSR.CSR0 = 0;   //不进行分频

/*PWMA预分频寄存器设置*/
PWMA->R.CP01 = 1;

/*设置PWM0为自动重装模式*/
PWMA->CR.CH0MOD = 1;
/*设置PWM输出波形的占空比,占空比=(CNR+1)/(CMR+1)*/
PWMA->CNR0 = 100;
PWMA->CMR0 = 100;
/*输出反转设置为不反转*/
PWMA->CR.CH0INV = 0;
/*PWM定时器0使能*/
PWMA->CR.CH0EN = 1;

/*通道0输出使能*/  
  PWMA->OE.PWM0 = 1;  
}

int main()
{
int temp = 100;
unsigned char flag = 0;
/*端口初始化*/
GPIO_Init();
/*PWM0初始化*/
PWM0_Init();
while(1)
{
    while(!Key_Scan() == 1)
    {
      delay_ms(15);
   if(!Key_Scan() == 1)
   {
    while(!Key_Scan())
    {
     delay_ms(35);
     if(flag == 0)temp--;
     else   temp++;
     if((temp == 0)||(temp == 100))
     {
      flag = ~flag;
     }
     /*对比较寄存器重新赋值*/
     PWMA->CMR0 = temp;
    }
   }
    }
}
}

PWM.rar

436.15 KB

相关帖子

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

本版积分规则

2

主题

468

帖子

1

粉丝