[DemoCode下载] M451 ADC PWM精简例程

[复制链接]
3618|11
 楼主| gaoyang9992006 发表于 2015-2-13 19:21 | 显示全部楼层 |阅读模式
该例程可以直接在M451 NuEdu的板子上运行,通过ADC的旋钮控制PWM调节LED的亮度
M451_ADC_PWM.zip (209.43 KB, 下载次数: 121)
598330983 发表于 2015-2-13 19:57 | 显示全部楼层
下载看看,是否跟那个240的通用,如果通用就容易移植。
mintspring 发表于 2015-2-14 07:45 来自手机 | 显示全部楼层
我也下载看看,是库函数里那个吗?
598330983 发表于 2015-2-14 22:47 来自手机 | 显示全部楼层
我看了下内容,发现好像是楼主自己写的吧?起码不是库函数带的例程
598330983 发表于 2015-2-16 22:17 来自手机 | 显示全部楼层
还是比较通俗易懂的
ilikerome 发表于 2015-2-17 14:14 | 显示全部楼层
学习一下了。。。。
 楼主| gaoyang9992006 发表于 2015-2-18 11:51 | 显示全部楼层
ilikerome 发表于 2015-2-17 14:14
学习一下了。。。。

互相学习,共同提高。
 楼主| 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全功能系列。它们适用于工业控制、工业自动化、消费类产品、网络设备、能源电力、马达控制等应用领域。


598330983 发表于 2015-2-20 19:23 | 显示全部楼层
gaoyang9992006 发表于 2015-2-18 11:56
作为一家全球微控制器领先企业,新唐提供基于ARM® Cortex™-M4 内核的新一代NuMicro™ 32位的微控制器。新 ...

4系列公用library库函数吗
quray1985 发表于 2015-3-26 22:23 | 显示全部楼层
楼主这个发了两次
玛尼玛尼哄 发表于 2016-7-3 16:16 | 显示全部楼层
  1. /**************************************************************************//**
  2. * [url=home.php?mod=space&uid=288409]@file[/url]     main.c
  3. * [url=home.php?mod=space&uid=895143]@version[/url]  V3.00
  4. * $Revision: 2 $
  5. * $Date: 14/08/12 6:35p $
  6. * [url=home.php?mod=space&uid=247401]@brief[/url]    Demonstrate how to set GPIO pin mode and use pin data input/output control.
  7. * @note
  8. * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
  9. *
  10. ******************************************************************************/
  11. #include "stdio.h"
  12. #include "M451Series.h"

  13. uint32_t Volume;

  14. /*---------------------------------------------------------------------------------------------------------*/
  15. /*  Main Function                                                                                          */
  16. /*---------------------------------------------------------------------------------------------------------*/
  17. int32_t main(void)
  18. {   
  19.     SYS_UnlockReg();
  20.           /* Enable HIRC clock (Internal RC 22.1184MHz) */
  21.     CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);
  22.     /* Wait for HIRC clock ready */
  23.     CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);
  24.     /* Select HCLK clock source as HIRC and and HCLK clock divider as 1 */
  25.     CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));
  26.           SYS_LockReg();
  27.        
  28.     GPIO_SetMode(PC, BIT2, GPIO_MODE_OUTPUT); //LED4
  29.           GPIO_SetMode(PC, BIT7, GPIO_MODE_OUTPUT); //LED7
  30.           
  31.           //初始化ADC
  32.           CLK_EnableModuleClock(EADC_MODULE);
  33.     SYS->GPB_MFPH &= ~(SYS_GPB_MFPH_PB9MFP_Msk | SYS_GPB_MFPH_PB10MFP_Msk);//配置ADC管脚
  34.     GPIO_DISABLE_DIGITAL_PATH(PB, BIT9); //关闭ADC引脚数字输入通道
  35.           EADC->CTL |=  EADC_CTL_ADCEN_Msk;     //使能ADC
  36.     EADC->CTL &= (~EADC_CTL_DIFFEN_Msk);  //设置ADC转换为单端输入模式
  37.     EADC_ConfigSampleModule(EADC, 0, EADC_SOFTWARE_TRIGGER, 6);  //ADC模块0选择通道6
  38.     EADC_ENABLE_SAMPLE_MODULE_INT(EADC, 0, 0x1);//Enable sample module 0 interrupt.               
  39.        
  40.           //初始化PWM
  41.                 SYS->GPC_MFPL &= ~SYS_GPC_MFPL_PC2MFP_Msk;
  42.     SYS->GPC_MFPL |= SYS_GPC_MFPL_PC2MFP_PWM0_CH2;//配置PWM管脚
  43.     /* Enable PWM module clock */
  44.     CLK_EnableModuleClock(PWM0_MODULE);
  45.     /* Select PWM module clock source */
  46.     CLK_SetModuleClock(PWM0_MODULE, CLK_CLKSEL2_PWM0SEL_PCLK0, 0);//选择PWM时钟源为系统时钟
  47.     /* Reset PWM0 channel 0~5 */
  48.     SYS_ResetModule(PWM0_RST);               
  49.                 PWM_ConfigOutputChannel(PWM0, 2, 100, 50);   //PWM0_CH2频率100Hz,占空比50%
  50.     /* Enable PWM Output path for PWM0 channel 2 */
  51.     PWM_EnableOutput(PWM0, 0x04);
  52.     // Start
  53.     PWM_Start(PWM0, 0x04);
  54.                
  55.                 while(1)
  56.                 {                  
  57.                                 PC->DOUT^=BIT7;   //反转IO电平,LED闪烁
  58.                           EADC_START_CONV(EADC, 0x1);    //AD开始转换
  59.                                 while(EADC_GET_INT_FLAG(EADC, 0x1) == 0);  //等待转换结束
  60.                                 Volume = EADC_GET_CONV_DATA(EADC, 0);    //取出AD转换结果
  61.                                 EADC_CLR_INT_FLAG(EADC, 0x1);   //清AD中断标志
  62.         PWM_ConfigOutputChannel(PWM0,2,100,(Volume*100/4096));//根据AD值调节PWM占空比调节LED亮度       
  63.         for(Volume=0;Volume<100000;Volume++);                          
  64.                 }               

  65. }


syokujinau 发表于 2016-12-18 11:53 | 显示全部楼层
感謝樓主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部