[菜农助学交流] 第五批 之四 AD+PWM

[复制链接]
2481|0
 楼主| cnjxlxp 发表于 2012-4-15 22:29 | 显示全部楼层 |阅读模式
PWM, AD, IO, TI, ADC

  1. #include <stdio.h>
  2. #include "NUC1xx.h"
  3. #include "Driver\DrvGPIO.h"
  4. #include "Driver\DrvSYS.h"
  5. #include "Driver\DrvUART.h"
  6. #include "Driver\DrvADC.h"
  7. #include "Driver\DrvPWM.h"

  8. #define Run_Led 2 //2----LED1 3----LED2 4----LED3 5----LED4

  9. void Init_System(void)
  10. {
  11. UNLOCKREG(x);
  12. DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1);
  13. DrvSYS_Delay(5000);
  14. LOCKREG(x);
  15. }

  16. void delay_ms(uint32_t count)
  17. {
  18. uint32_t i,j;
  19. for(i=count;i>0;i--)
  20. for(j=2395;j>0;j--);
  21. }

  22. void Init_Uart(void)
  23. {
  24. STR_UART_T param;
  25. DrvSYS_SelectIPClockSource(E_SYS_UART_CLKSRC,0);
  26. DrvGPIO_InitFunction(E_FUNC_UART0);
  27. param.u32BaudRate = 9600;
  28. param.u8cDataBits = DRVUART_DATABITS_8;
  29. param.u8cStopBits = DRVUART_STOPBITS_1;
  30. param.u8cParity = DRVUART_PARITY_NONE;
  31. param.u8cRxTriggerLevel = DRVUART_FIFO_1BYTES;
  32. param.u8TimeOut = 0;
  33. DrvUART_Open(UART_PORT0,¶m);
  34. }

  35. void Init_PWM0(void)
  36. {
  37. S_DRVPWM_TIME_DATA_T sPt;

  38. sPt.u8Mode = DRVPWM_AUTO_RELOAD_MODE;
  39. sPt.u32Frequency = 1000;
  40. sPt.u8HighPulseRatio =50;
  41. sPt.i32Inverter = 0;

  42. DrvPWM_Open();

  43. DrvPWM_SelectClockSource(DRVPWM_TIMER0, DRVPWM_EXT_12M);

  44. DrvPWM_SetTimerClk(DRVPWM_TIMER0, &sPt);

  45. DrvPWM_SetTimerIO(DRVPWM_TIMER0, 1);

  46. DrvGPIO_InitFunction(E_FUNC_PWM01);

  47. DrvPWM_Enable(DRVPWM_TIMER0, 1); /* Enable PWM timer 0 function. */
  48. }

  49. int main (void)
  50. {

  51. uint16_t i32ConversionData;
  52. // uint32_t i32ConversionData_Sum;
  53. //uint8_t IsFirst = 1;

  54. Init_System();

  55. Init_Uart();

  56. Init_PWM0();

  57. DrvGPIO_Open(E_GPA,Run_Led, E_IO_OUTPUT);
  58. DrvGPIO_ClrBit(E_GPA,Run_Led);

  59. DrvGPIO_InitFunction(E_FUNC_ADC1);
  60. DrvADC_Open(ADC_SINGLE_END, ADC_SINGLE_OP, 0x02, EXTERNAL_12MHZ, 3);

  61. printf("\n");
  62. printf("Driver version: %x\n", DrvADC_GetVersion());

  63. DrvADC_EnableSelfCalibration();
  64. while(DrvADC_IsCalibrationDone()==0);
  65. DrvADC_DisableSelfCalibration();
  66. DrvSYS_Delay(5000);
  67. while(1)
  68. {
  69. DrvADC_StartConvert();

  70. while(DrvADC_IsConversionDone()==0);

  71. i32ConversionData = DrvADC_GetConversionData(1);

  72. printf("%d\n",i32ConversionData);
  73. DrvSYS_Delay(5000);
  74. DrvSYS_Delay(5000);
  75. delay_ms(1000);
  76. PWMA->CMR0 =(PWMA->CNR0+1)*(i32ConversionData*100/4096)/100-1;
  77. printf("PWMA->CMR0: %d\n", PWMA->CMR0);
  78. DrvSYS_Delay(5000);
  79. printf("PWMA->CNR0: %d\n", PWMA->CNR0);
  80. }
  81. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

46

帖子

2

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