实现STC32G12K128开发板的PWM输出,测试并验证400Hz和50Hz频率下误差小于0.02%
This commit is contained in:
123
Listings/main.lst
Normal file
123
Listings/main.lst
Normal file
@ -0,0 +1,123 @@
|
||||
C251 COMPILER V5.60.0, main 01/04/26 14:04:27 PAGE 1
|
||||
|
||||
|
||||
C251 COMPILER V5.60.0, COMPILATION OF MODULE main
|
||||
OBJECT MODULE PLACED IN .\Objects\main.obj
|
||||
COMPILER INVOKED BY: C:\Keil_v5\C251\BIN\C251.EXE main.c INTR2 BROWSE DEBUG PRINT(.\Listings\main.lst) TABS(2) OBJECT(.\
|
||||
-Objects\main.obj)
|
||||
|
||||
stmt level source
|
||||
|
||||
1 #include "stc32g.h"
|
||||
2 #include "intrins.h"
|
||||
3
|
||||
4 #define MAIN_Fosc 24000000L // <20><>ʱ<EFBFBD><CAB1>24MHz
|
||||
5 typedef unsigned char u8;
|
||||
6 typedef unsigned int u16;
|
||||
7 typedef unsigned long u32;
|
||||
8
|
||||
9 /**************************** <20>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD> 400Hz PWM ****************************/
|
||||
10 //#define PWM_FREQ 400 // Ŀ<><C4BF>Ƶ<EFBFBD><C6B5>
|
||||
11 //#define PERIOD 59999 // 24MHz<48><7A> 400Hz <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ֵ
|
||||
12 //#define DUTY 18000 // 30%ռ<>ձ<EFBFBD> (PERIOD/2)
|
||||
13
|
||||
14 /**************************** <20><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>50Hz / 30%ռ<>ձ<EFBFBD> ****************************/
|
||||
15 #define PWM_FREQ 50
|
||||
16 #define PSC_VAL 239 // Ԥ<><D4A4>Ƶֵ<C6B5><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ<36><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
17 #define PERIOD 1999 // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ65535<33><35><EFBFBD>Ϲ棩
|
||||
18 #define DUTY 600 // 30%ռ<>ձ<EFBFBD> (1999*0.3=600)
|
||||
19
|
||||
20 /**************************** <20>ٷ<EFBFBD><D9B7>궨<EFBFBD><EAB6A8> <20><><EFBFBD><EFBFBD> ****************************/
|
||||
21 #define PWM1_0 0x00 //P:P1.0 N:P1.1
|
||||
22 #define PWM1_1 0x01 //P:P2.0 N:P2.1
|
||||
23 #define PWM1_2 0x02 //P:P6.0 N:P6.1 ? <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
24 #define ENO1P 0x01
|
||||
25
|
||||
26 /*****************************************************************************/
|
||||
27 void UpdatePwm(void);
|
||||
28
|
||||
29 /******************** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> **************************/
|
||||
30 void main(void)
|
||||
31 {
|
||||
32 1 WTST = 0;
|
||||
33 1 EAXFR = 1; // <20><>չ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
34 1 CKCON = 0;
|
||||
35 1
|
||||
36 1 // IO<49>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
37 1 P0M1 = 0x00; P0M0 = 0x00;
|
||||
38 1 P1M1 = 0x00; P1M0 = 0x00;
|
||||
39 1 P2M1 = 0x00; P2M0 = 0x00;
|
||||
40 1 P3M1 = 0x00; P3M0 = 0x00;
|
||||
41 1 P4M1 = 0x00; P4M0 = 0x00;
|
||||
42 1 P5M1 = 0x00; P5M0 = 0x00;
|
||||
43 1 P6M1 = 0x00; P6M0 = 0x00;
|
||||
44 1 P7M1 = 0x00; P7M0 = 0x00;
|
||||
45 1
|
||||
46 1 // ===================== PWM Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =====================
|
||||
47 1 PWMA_ENO = 0x00;
|
||||
48 1 PWMA_ENO |= ENO1P; // ʹ<><CAB9>PWM1ͨ<31><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
49 1
|
||||
50 1 PWMA_CCER1 = 0x00;
|
||||
51 1 PWMA_CCMR1 = 0x68; // PWMģʽ1<CABD><31><EFBFBD><EFBFBD>
|
||||
52 1 PWMA_CCER1 = 0x01; // <20>ߵ<EFBFBD>ƽ<EFBFBD><C6BD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
53 1
|
||||
54 1 PWMA_PS = 0x00;
|
||||
55 1 PWMA_PS |= PWM1_2; // ? ѡ<><D1A1>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>P6.0 <20><><EFBFBD><EFBFBD>
|
||||
56 1
|
||||
57 1 // ========== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>֮ǰȱʧ<C8B1><CAA7><EFBFBD><EFBFBD> ==========
|
||||
58 1 PWMA_PSCRH = (u8)(PSC_VAL >> 8);
|
||||
C251 COMPILER V5.60.0, main 01/04/26 14:04:27 PAGE 2
|
||||
|
||||
59 1 PWMA_PSCRL = (u8)PSC_VAL;
|
||||
60 1
|
||||
61 1 UpdatePwm(); // <20><><EFBFBD><EFBFBD>400Hz/50%ռ<>ձȲ<D5B1><C8B2><EFBFBD>
|
||||
62 1
|
||||
63 1 PWMA_BKR = 0x80; // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
|
||||
64 1 PWMA_CR1 = 0x81; // <20>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD>رյ<D8B1><D5B5><EFBFBD><EFBFBD><EFBFBD>ģʽ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PWM
|
||||
65 1
|
||||
66 1 EA = 1; // <20><><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>
|
||||
67 1
|
||||
68 1 while (1)
|
||||
69 1 {
|
||||
70 2 // <20><><EFBFBD><EFBFBD><EFBFBD>κβ<CEBA><CEB2><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>400Hz PWM
|
||||
71 2 }
|
||||
72 1 }
|
||||
73
|
||||
74 //========================================================================
|
||||
75 // <20><><EFBFBD><EFBFBD>: UpdatePwm(void)
|
||||
76 // <20><><EFBFBD><EFBFBD>: <20>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD> 400Hz + 50%ռ<>ձ<EFBFBD>
|
||||
77 //========================================================================
|
||||
78 void UpdatePwm(void)
|
||||
79 {
|
||||
80 1 // <20>̶<EFBFBD><CCB6><EFBFBD><EFBFBD>ڣ<EFBFBD>59999 <20><> 400Hz
|
||||
81 1 PWMA_ARRH = (u8)(PERIOD >> 8);
|
||||
82 1 PWMA_ARRL = (u8)PERIOD;
|
||||
83 1
|
||||
84 1 // <20>̶<EFBFBD>ռ<EFBFBD>ձȣ<D5B1>29999 <20><> 50%
|
||||
85 1 PWMA_CCR1H = (u8)(DUTY >> 8);
|
||||
86 1 PWMA_CCR1L = (u8)DUTY;
|
||||
87 1 }
|
||||
|
||||
|
||||
Module Information Static Overlayable
|
||||
------------------------------------------------
|
||||
code size = 225 ------
|
||||
ecode size = ------ ------
|
||||
data size = ------ ------
|
||||
idata size = ------ ------
|
||||
pdata size = ------ ------
|
||||
xdata size = ------ ------
|
||||
xdata-const size = ------ ------
|
||||
edata size = ------ ------
|
||||
bit size = ------ ------
|
||||
ebit size = ------ ------
|
||||
bitaddressable size = ------ ------
|
||||
ebitaddressable size = ------ ------
|
||||
far data size = ------ ------
|
||||
huge data size = ------ ------
|
||||
const size = 2 ------
|
||||
hconst size = ------ ------
|
||||
End of Module Information.
|
||||
|
||||
|
||||
C251 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
Reference in New Issue
Block a user