main.c 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. /******************************************************************************************************
  2. IC : TM52F1376
  3. 演示效果 :
  4. 时钟 :
  5. 快时钟系统主频为 18.432M/2 = 9.216M
  6. *********************************************************************************************************/
  7. #include <REGtenxTM52F1386.h>
  8. #include "TM52F1386_bsp.h"
  9. #include <intrins.h>
  10. /*
  11. 系统频率设置为二分频
  12. */
  13. /******************************************************************************************
  14. ** 函数名称: pwm0_init
  15. ** 函数描述: pwm0初始化函数
  16. ** 输入参数: 无
  17. ** 输出参数: 无
  18. *******************************************************************************************/
  19. void pwm0_init()
  20. {
  21. PORTIDX = 1;
  22. PINMOD76 = (PINMOD76&~0x0f) | PIN_L_MODE_AF; //PWM0 PIN CONFIG INIT P16
  23. PINMOD54 = (PINMOD54&~0x0f) | PIN_L_MODE_AF; //PWM0 PIN CONFIG INIT P14
  24. PORTIDX = 2;
  25. PINMOD76 = (PINMOD76&~0x0f) | PIN_L_MODE_AF; //PWM0 PIN CONFIG INIT P26
  26. PWMEN = (PWMEN & ~PWMEN_PWM0EN_MASK) | (1 << PWMEN_PWM0EN_POS); //PWM0 ENABLE
  27. }
  28. /******************************************************************************************
  29. ** 函数名称: pwm1_init
  30. ** 函数描述: pwm1初始化函数
  31. ** 输入参数: 无
  32. ** 输出参数: 无
  33. *******************************************************************************************/
  34. void pwm1_init()
  35. {
  36. PORTIDX = 1;
  37. PINMOD76 = (PINMOD76&~0xf0) | PIN_H_MODE_AF; //PWM1 PIN CONFIG INIT P17
  38. PINMOD54 = (PINMOD54&~0xf0) | PIN_H_MODE_AF; //PWM1 PIN CONFIG INIT P15
  39. PWMEN = (PWMEN & ~PWMEN_PWM1EN_MASK) | (1 << PWMEN_PWM1EN_POS); //PWM0 ENABLE
  40. }
  41. /******************************************************************************************
  42. ** 函数名称: pwm1_init
  43. ** 函数描述: pwm1初始化函数
  44. ** 输入参数: 无
  45. ** 输出参数: 无
  46. *******************************************************************************************/
  47. void pwm2_init()
  48. {
  49. PORTIDX = 5;
  50. PINMOD76 = (PINMOD76&~0xff) | PIN_H_MODE_AF | PIN_L_MODE_AF; //
  51. PWMEN = (PWMEN & ~PWMEN_PWM2EN_MASK) | (1 << PWMEN_PWM2EN_POS); //PWM0 ENABLE
  52. }
  53. /******************************************************************************************
  54. ** 函数名称: pwm1_init
  55. ** 函数描述: pwm1初始化函数
  56. ** 输入参数: 无
  57. ** 输出参数: 无
  58. *******************************************************************************************/
  59. void pwm3_init()
  60. {
  61. PORTIDX = 0;
  62. PINMOD10 = (PINMOD10&~0xff) | PIN_H_MODE_AF | PIN_L_MODE_AF; //
  63. PWMEN = (PWMEN & ~PWMEN_PWM3EN_MASK) | (1 << PWMEN_PWM3EN_POS); //PWM0 ENABLE
  64. }
  65. /******************************************************************************************
  66. ** 函数名称: pwm0_clock_config
  67. ** 函数描述: pwm0 时钟源配置函数
  68. ** 输入参数: value 0:FSYSCLK 1:FSYSCLK 2:FRC 3:FRC*2
  69. ** 输出参数: 无
  70. *******************************************************************************************/
  71. void pwm0_clock_config (unsigned char value) //PWM时钟源模式
  72. {
  73. PWMCON = (PWMCON & ~0x03) | (value << 0);
  74. }
  75. /******************************************************************************************
  76. ** 函数名称: pwm0_clock_config
  77. ** 函数描述: pwm0时钟源配置函数
  78. ** 输入参数: value 0:FSYSCLK 1:FSYSCLK 2:FRC 3:FRC*2
  79. ** 输出参数: 无
  80. *******************************************************************************************/
  81. void pwm1_clock_config (unsigned char value) //PWM时钟源模式
  82. {
  83. PWMCON = (PWMCON & ~0x0c) | (value << 2);
  84. }
  85. /******************************************************************************************
  86. ** 函数名称: pwm0_clock_config
  87. ** 函数描述: pwm0时钟源配置函数
  88. ** 输入参数: value 0:FSYSCLK 1:FSYSCLK 2:FRC 3:FRC*2
  89. ** 输出参数: 无
  90. *******************************************************************************************/
  91. void pwm2_clock_config (unsigned char value) //PWM时钟源模式
  92. {
  93. PWMCON = (PWMCON & ~0xc0) | (value << 6);
  94. }
  95. /******************************************************************************************
  96. ** 函数名称: pwm0_clock_config
  97. ** 函数描述: pwm0时钟源配置函数
  98. ** 输入参数: value 0:FSYSCLK 1:FSYSCLK 2:FRC 3:FRC*2
  99. ** 输出参数: 无
  100. *******************************************************************************************/
  101. void pwm3_clock_config (unsigned char value) //PWM时钟源模式
  102. {
  103. PWMCON = (PWMCON & ~0x30) | (value << 4);
  104. }
  105. /******************************************************************************************
  106. ** 函数名称: pwm_config_init
  107. ** 函数描述: pwm周期、占空比设置函数
  108. ** 输入参数: prd:周期 duty:占空比 ch:通道
  109. ** 输出参数: 无
  110. *******************************************************************************************/
  111. void pwm_config_init(unsigned int prd, unsigned int duty,unsigned char ch)
  112. {
  113. PWMIDX = ch;
  114. PWMPRDL = prd & 0xff; //写 先低后高 读 先高后低
  115. PWMPRDH = (prd >> 8) & 0XFF;
  116. PWMIDX = ch;
  117. PWMDL = duty & 0XFF; // PWM1DL 占空比低字节
  118. PWMDH = (duty >> 8) & 0XFF; // PWM1DL 占空比低字节
  119. }
  120. /******************************************************************************************
  121. ** 函数名称: main
  122. ** 函数描述: main函数
  123. ** 输入参数: 无
  124. ** 输出参数: 无
  125. *******************************************************************************************/
  126. void main()
  127. {
  128. bsp_clock_init(); // 系统快钟18.432 div 2 = 9.216Mhz
  129. pwm0_init(); //PWM0引脚初始化
  130. pwm1_init(); //PWM1引脚初始化
  131. pwm2_init(); //PWM2引脚初始化
  132. pwm3_init(); //PWM3引脚初始化
  133. pwm0_clock_config(2); //选择FRC为PWM模组的时钟源
  134. pwm1_clock_config(2); //选择FRC为PWM模组的时钟源
  135. pwm2_clock_config(2); //选择FRC为PWM模组的时钟源
  136. pwm3_clock_config(2); //选择FRC为PWM模组的时钟源
  137. pwm_config_init(65535, 10000, 0x00); // PWM0
  138. pwm_config_init(65535, 10000, 0x10); // PWM1
  139. pwm_config_init(65535, 10000, 0x20); // PWM2
  140. pwm_config_init(65535, 10000, 0x30); // PWM30
  141. pwm_config_init(65535, 10000, 0x31); // PWM31
  142. while(1)
  143. {
  144. }
  145. }