打印
[DemoCode下载]

M451 ADC PWM精简例程

[复制链接]
3228|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaoyang9992006|  楼主 | 2015-2-13 19:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
该例程可以直接在M451 NuEdu的板子上运行,通过ADC的旋钮控制PWM调节LED的亮度
M451_ADC_PWM.zip (209.43 KB)
沙发
598330983| | 2015-2-13 19:57 | 只看该作者
下载看看,是否跟那个240的通用,如果通用就容易移植。

使用特权

评论回复
板凳
mintspring| | 2015-2-14 07:45 | 只看该作者
我也下载看看,是库函数里那个吗?

使用特权

评论回复
地板
598330983| | 2015-2-14 22:47 | 只看该作者
我看了下内容,发现好像是楼主自己写的吧?起码不是库函数带的例程

使用特权

评论回复
5
598330983| | 2015-2-16 22:17 | 只看该作者
还是比较通俗易懂的

使用特权

评论回复
6
ilikerome| | 2015-2-17 14:14 | 只看该作者
学习一下了。。。。

使用特权

评论回复
7
gaoyang9992006|  楼主 | 2015-2-18 11:51 | 只看该作者
ilikerome 发表于 2015-2-17 14:14
学习一下了。。。。

互相学习,共同提高。

使用特权

评论回复
8
gaoyang9992006|  楼主 | 2015-2-18 11:56 | 只看该作者

作为一家全球微控制器领先企业,新唐提供基于ARM® Cortex™-M4 内核的新一代NuMicro™ 32位的微控制器。新唐的 Cortex™-M4 微控制器提供宽工作电压(2.5V ~ 5.5V),工业级温度(-40℃ ~ 105℃),高精度内部振荡器和强抗干扰性。

新唐的 Cortex™-M4 微控制器包括NuMicro™ NUC442/NUC472系列和M451系列,NUC442/NUC472系列产品特性,含有浮点运算单元和DSP的ARM® Cortex™-M4 内核,最高可运行至84 MHz,内建256K/512K字节FLASH存贮器、64K字节SRAM,10/100M以太网单元、高速USB设备、全速USB OTG、CAN、SD驱动和其它外设单元。M451系列产品特性:含有浮点运算单元和DSP的ARM® Cortex™-M4 内核,最高可运行至72 MHz,内建128K/256K字节FLASH存贮器、32K字节SRAM,快速USB OTG、CAN和其它外设单元。

新唐的NuMicro™ NUC442/NUC472系列分为NUC442通讯系列和NUC472全功能系列。M451系列分为M451B基础系列、M451U USB系列、M451C CAN系列和M451A全功能系列。它们适用于工业控制、工业自动化、消费类产品、网络设备、能源电力、马达控制等应用领域。


使用特权

评论回复
9
598330983| | 2015-2-20 19:23 | 只看该作者
gaoyang9992006 发表于 2015-2-18 11:56
作为一家全球微控制器领先企业,新唐提供基于ARM® Cortex™-M4 内核的新一代NuMicro™ 32位的微控制器。新 ...

4系列公用library库函数吗

使用特权

评论回复
10
quray1985| | 2015-3-26 22:23 | 只看该作者
楼主这个发了两次

使用特权

评论回复
11
玛尼玛尼哄| | 2016-7-3 16:16 | 只看该作者
/**************************************************************************//**
* [url=home.php?mod=space&uid=288409]@file[/url]     main.c
* [url=home.php?mod=space&uid=895143]@version[/url]  V3.00
* $Revision: 2 $
* $Date: 14/08/12 6:35p $
* [url=home.php?mod=space&uid=247401]@brief[/url]    Demonstrate how to set GPIO pin mode and use pin data input/output control.
* @note
* Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
*
******************************************************************************/
#include "stdio.h"
#include "M451Series.h"

uint32_t Volume;

/*---------------------------------------------------------------------------------------------------------*/
/*  Main Function                                                                                          */
/*---------------------------------------------------------------------------------------------------------*/
int32_t main(void)
{   
    SYS_UnlockReg();
          /* Enable HIRC clock (Internal RC 22.1184MHz) */
    CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);
    /* Wait for HIRC clock ready */
    CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);
    /* Select HCLK clock source as HIRC and and HCLK clock divider as 1 */
    CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));
          SYS_LockReg();
       
    GPIO_SetMode(PC, BIT2, GPIO_MODE_OUTPUT); //LED4
          GPIO_SetMode(PC, BIT7, GPIO_MODE_OUTPUT); //LED7
          
          //初始化ADC
          CLK_EnableModuleClock(EADC_MODULE);
    SYS->GPB_MFPH &= ~(SYS_GPB_MFPH_PB9MFP_Msk | SYS_GPB_MFPH_PB10MFP_Msk);//配置ADC管脚
    GPIO_DISABLE_DIGITAL_PATH(PB, BIT9); //关闭ADC引脚数字输入通道
          EADC->CTL |=  EADC_CTL_ADCEN_Msk;     //使能ADC
    EADC->CTL &= (~EADC_CTL_DIFFEN_Msk);  //设置ADC转换为单端输入模式
    EADC_ConfigSampleModule(EADC, 0, EADC_SOFTWARE_TRIGGER, 6);  //ADC模块0选择通道6
    EADC_ENABLE_SAMPLE_MODULE_INT(EADC, 0, 0x1);//Enable sample module 0 interrupt.               
       
          //初始化PWM
                SYS->GPC_MFPL &= ~SYS_GPC_MFPL_PC2MFP_Msk;
    SYS->GPC_MFPL |= SYS_GPC_MFPL_PC2MFP_PWM0_CH2;//配置PWM管脚
    /* Enable PWM module clock */
    CLK_EnableModuleClock(PWM0_MODULE);
    /* Select PWM module clock source */
    CLK_SetModuleClock(PWM0_MODULE, CLK_CLKSEL2_PWM0SEL_PCLK0, 0);//选择PWM时钟源为系统时钟
    /* Reset PWM0 channel 0~5 */
    SYS_ResetModule(PWM0_RST);               
                PWM_ConfigOutputChannel(PWM0, 2, 100, 50);   //PWM0_CH2频率100Hz,占空比50%
    /* Enable PWM Output path for PWM0 channel 2 */
    PWM_EnableOutput(PWM0, 0x04);
    // Start
    PWM_Start(PWM0, 0x04);
               
                while(1)
                {                  
                                PC->DOUT^=BIT7;   //反转IO电平,LED闪烁
                          EADC_START_CONV(EADC, 0x1);    //AD开始转换
                                while(EADC_GET_INT_FLAG(EADC, 0x1) == 0);  //等待转换结束
                                Volume = EADC_GET_CONV_DATA(EADC, 0);    //取出AD转换结果
                                EADC_CLR_INT_FLAG(EADC, 0x1);   //清AD中断标志
        PWM_ConfigOutputChannel(PWM0,2,100,(Volume*100/4096));//根据AD值调节PWM占空比调节LED亮度       
        for(Volume=0;Volume<100000;Volume++);                          
                }               

}


使用特权

评论回复
12
syokujinau| | 2016-12-18 11:53 | 只看该作者
感謝樓主

使用特权

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

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1965

主题

15945

帖子

208

粉丝