[应用方案] 身边的新塘+M451_ADC_PWM

[复制链接]
1604|4
 楼主| lvyunhua 发表于 2017-4-29 23:17 | 显示全部楼层 |阅读模式
M451创新大赛的参考资料,希望对对大家有所帮助!

M451_ADC_PWM.zip

209.43 KB, 下载次数: 37

打赏榜单

21ic小管家 打赏了 3.00 元 2017-05-17

huangcunxiake 发表于 2017-4-30 16:55 | 显示全部楼层
为何这么多人在活动结束的最后一刻参加呢
 楼主| lvyunhua 发表于 2017-4-30 21:28 | 显示全部楼层
为何这么多人在活动结束的最后一刻参加呢

我昨天晚上才看到这个活动的。
 楼主| lvyunhua 发表于 2017-5-2 10:16 | 显示全部楼层
顶一顶,支持下!
598330983 发表于 2017-5-3 22:42 | 显示全部楼层
  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. }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:工程师是科学家,工程师是艺术家,工程师也是思想家。

2835

主题

8356

帖子

27

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