1
0

ADC.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <MyProject.h>
  2. /*
  3. 已使用ADC端口
  4. P25 AD3 SREF !>禁用
  5. P24 AD2 OVP
  6. P16 AD9 NTC
  7. P34 AD7 IBUS !> AD6需要外部接入2.5V分压并开启AD6通道 否则会影响AD7采样数据
  8. 特殊端口
  9. AD0 U相电流采样
  10. AD1 V相电流采样
  11. AD4 W相电流采样或者母线电流采样
  12. */
  13. /**
  14. @function ADC_Init
  15. @brief ADC初始化
  16. @date 2025-12-23
  17. */
  18. void ADC_Init(void)
  19. {
  20. // 配置参考电压为5V
  21. SetReg(VREF_VHALF_CR, VRVSEL1 | VRVSEL0, VRVSEL0);
  22. // 配置半电压为2.5V
  23. SetBit(VREF_VHALF_CR, VHALFSEL1 | VHALFSEL0);
  24. // 使能VREF输出
  25. SetBit(P3_AN, PIN5);
  26. SetBit(P3_OE, PIN5);
  27. // 使能基准电压与半电压
  28. SetBit(VREF_VHALF_CR, VREFEN | VHALFEN);
  29. // 端口使能
  30. SetBit(P1_AN, PIN6);
  31. SetBit(P2_AN, PIN4 | PIN5);
  32. SetBit(P3_AN, PIN4);
  33. // 通道使能
  34. SetBit(ADC_MASK, CH2EN | CH3EN | CH7EN | CH9EN);
  35. SetBit(ADC_MASK, 0x3000);
  36. ADC_SCYC = 0x33;
  37. // 高位对齐
  38. SetBit(ADC_CR, ADCALIGN);
  39. ClrBit(ADC_CR, ADCIE);
  40. SetBit(ADC_CR, ADCEN);
  41. }