[DemoCode下载] MG51使用IO触发ADC采集

[复制链接]
 楼主| 稳稳の幸福 发表于 2025-5-25 20:41 | 显示全部楼层 |阅读模式
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* SPDX-License-Identifier: Apache-2.0                                                                     */
  4. /* Copyright(c) 2023 Nuvoton Technology Corp. All rights reserved.                                         */
  5. /*                                                                                                         */
  6. /*---------------------------------------------------------------------------------------------------------*/

  7. #include "MG51_SDCC.H"

  8. //***********************************************************************************************************
  9. //  File Function: MS51 ADC trig by GPIO demo
  10. //***********************************************************************************************************

  11. BIT  adcintflag;
  12. /******************************************************************************
  13. * FUNCTION_PURPOSE: ADC interrupt Service Routine
  14. ******************************************************************************/
  15. void ADC_ISR (void) __interrupt (11)
  16. {
  17.         PUSH_SFRS;
  18.   
  19.     clr_ADCCON0_ADCF;                               //clear ADC interrupt flag
  20.     adcintflag=1;

  21.     POP_SFRS;
  22. }

  23. /******************************************************************************
  24. The main C function.  Program execution starts
  25. here after stack initialization.
  26. ******************************************************************************/
  27. void main (void)
  28. {
  29.     UINT16 ADCResult12bit;

  30.   /* UART0 settting for printf function */
  31.     MODIFY_HIRC(HIRC_24);
  32.     Enable_UART0_VCOM_printf_24M_115200();
  33.     printf ("\n Test start ...");

  34. /*---------------------------------------------------------------
  35.   ADC port trig initial setting toggle P0.4 to start ADC
  36. ----------------------------------------------------------------*/
  37.     ENABLE_ADC_AIN0;                              // Enable AIN0 P1.7 as ADC pin
  38.     P04_QUASI_MODE;
  39.     P04_FALLINGEDGE_TRIG_ADC;                     // P0.4 falling edge as adc start trig signal
  40. /* Enable ADC interrupt */
  41.     ENABLE_ADC_INTERRUPT;                         // Enable ADC interrupt (if use interrupt)
  42.     ENABLE_GLOBAL_INTERRUPT;
  43. /* Trig P12 falling edge to start adc, no need set ADCS bit   */
  44.     while(1)                                      // Wait ADC interrupt
  45.     {
  46.       if (adcintflag)
  47.       {
  48.             ADCResult12bit = ADCRH<<4;
  49.             ADCResult12bit|= ADCRL&0x0F;
  50.             printf ("\n Value = 0x%x",ADCResult12bit);
  51.             adcintflag =0;
  52.       }
  53.       Timer0_Delay(24000000,500,1000);
  54.     }


  55. }


暗夜幽灵骑士 发表于 2025-5-26 09:10 | 显示全部楼层
看起来你已经成功实现了通过GPIO触发ADC采集的功能。代码结构很清晰,中断服务例程和主函数都写得很好。
蚊子的噩梦 发表于 2025-5-26 18:53 | 显示全部楼层
这个代码示例展示了如何使用MG51的GPIO触发ADC采集。代码中设置了P0.4作为ADC的触发信号,并且在ADC中断服务例程中处理采集结果。
幻想收藏家 发表于 2025-5-26 22:57 | 显示全部楼层
这个代码示例展示了如何使用MG51的GPIO触发ADC采集。代码中使用了P0.4作为触发信号,当P0.4产生下降沿时,启动ADC采集。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

203

主题

3409

帖子

8

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