实现STC32G12K128开发板的PWM输出,测试并验证400Hz和50Hz频率下误差小于0.02%
This commit is contained in:
327
Listings/STC32G_PWM_TEST.map
Normal file
327
Listings/STC32G_PWM_TEST.map
Normal file
@ -0,0 +1,327 @@
|
|||||||
|
L251 LINKER/LOCATER V4.66.93.0 04/01/2026 14:04:27 PAGE 1
|
||||||
|
|
||||||
|
|
||||||
|
L251 LINKER/LOCATER V4.66.93.0, INVOKED BY:
|
||||||
|
C:\KEIL_V5\C251\BIN\L251.EXE .\Objects\main.obj TO .\Objects\STC32G_PWM_TEST PRINT (.\Listings\STC32G_PWM_TEST.map) CASE
|
||||||
|
>> CLASSES (EDATA (0X0-0XFFF), HDATA (0X0-0XFFF))
|
||||||
|
|
||||||
|
|
||||||
|
CPU MODE: 251 SOURCE MODE
|
||||||
|
MEMORY MODEL: TINY
|
||||||
|
|
||||||
|
|
||||||
|
INPUT MODULES INCLUDED:
|
||||||
|
.\Objects\main.obj (main)
|
||||||
|
COMMENT TYPE 0: C251 V5.60.0
|
||||||
|
C:\KEIL_V5\C251\LIB\C2ST.LIB (?C_START)
|
||||||
|
COMMENT TYPE 0: A251 V4.69.6.0
|
||||||
|
C:\KEIL_V5\C251\LIB\C2ST.LIB (SPRINTF)
|
||||||
|
COMMENT TYPE 0: A251 V4.69.6.0
|
||||||
|
C:\KEIL_V5\C251\LIB\C2ST.LIB (STRLEN)
|
||||||
|
COMMENT TYPE 0: C251 V5.58.7
|
||||||
|
C:\KEIL_V5\C251\LIB\C2ST.LIB (?C?PRNFMT)
|
||||||
|
COMMENT TYPE 0: A251 V4.69.6.0
|
||||||
|
|
||||||
|
|
||||||
|
ACTIVE MEMORY CLASSES OF MODULE: .\Objects\STC32G_PWM_TEST (main)
|
||||||
|
|
||||||
|
BASE START END USED MEMORY CLASS
|
||||||
|
==========================================================
|
||||||
|
000000H 000000H 000FFFH 000100H EDATA
|
||||||
|
000000H 000000H 000FFFH HDATA
|
||||||
|
000000H 008000H 00FFFFH 000006H NCONST
|
||||||
|
FF0000H FF0000H FFFFFFH 0003EAH CODE
|
||||||
|
000000H 000000H 00007FH 000017H DATA
|
||||||
|
|
||||||
|
|
||||||
|
MEMORY MAP OF MODULE: .\Objects\STC32G_PWM_TEST (main)
|
||||||
|
|
||||||
|
|
||||||
|
START STOP LENGTH ALIGN RELOC MEMORY CLASS SEGMENT NAME
|
||||||
|
=========================================================================
|
||||||
|
000000H 000007H 000008H --- AT.. DATA "REG BANK 0"
|
||||||
|
000008H 000016H 00000FH BYTE UNIT DATA _DATA_GROUP_
|
||||||
|
000017H 000116H 000100H BYTE UNIT EDATA ?STACK
|
||||||
|
000117H 007FFFH 007EE9H --- --- **GAP**
|
||||||
|
008000H 008003H 000004H BYTE UNIT NCONST ?NC?PRINTF
|
||||||
|
008004H 008005H 000002H BYTE UNIT NCONST ?NC?MAIN
|
||||||
|
008006H FEFFFFH FE7FFAH --- --- **GAP**
|
||||||
|
FF0000H FF0002H 000003H --- OFFS.. CODE ?CO?start251?4
|
||||||
|
FF0003H FF02E2H 0002E0H BYTE UNIT CODE ?C?LIB_CODE
|
||||||
|
FF02E3H FF0387H 0000A5H BYTE INSEG CODE ?PR?_M?MAIN
|
||||||
|
FF0388H FF03B0H 000029H BYTE INSEG CODE ?PR?UPDATEPWM?MAIN
|
||||||
|
FF03B1H FF03C3H 000013H BYTE UNIT CODE ?C_C51STARTUP
|
||||||
|
FF03C4H FF03C6H 000003H BYTE UNIT CODE ?C_C51STARTUP?3
|
||||||
|
FF03C7H FF03D9H 000013H BYTE INSEG CODE ?PR?MAIN?MAIN
|
||||||
|
FF03DAH FF03E9H 000010H BYTE INSEG CODE ?PR?STRLEN?_?STRLEN
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
OVERLAY MAP OF MODULE: .\Objects\STC32G_PWM_TEST (main)
|
||||||
|
|
||||||
|
|
||||||
|
FUNCTION/MODULE BIT_GROUP DATA_GROUP
|
||||||
|
--> CALLED FUNCTION/MODULE START STOP START STOP
|
||||||
|
====================================================
|
||||||
|
?C_C51STARTUP ----- ----- ----- -----
|
||||||
|
|
||||||
|
*** NEW ROOT **************
|
||||||
|
|
||||||
|
L251 LINKER/LOCATER V4.66.93.0 04/01/2026 14:04:27 PAGE 2
|
||||||
|
|
||||||
|
|
||||||
|
?C_C51STARTUP?3 ----- ----- ----- -----
|
||||||
|
+--> main/main
|
||||||
|
|
||||||
|
main/main ----- ----- ----- -----
|
||||||
|
+--> _m/main
|
||||||
|
+--> SPRINTF/SPRINTF
|
||||||
|
+--> strlen?_/STRLEN
|
||||||
|
|
||||||
|
_m/main ----- ----- ----- -----
|
||||||
|
+--> UpdatePwm/main
|
||||||
|
|
||||||
|
UpdatePwm/main ----- ----- ----- -----
|
||||||
|
|
||||||
|
SPRINTF/SPRINTF ----- ----- 0008H 0016H
|
||||||
|
+--> OUT/SPRINTF
|
||||||
|
|
||||||
|
OUT/SPRINTF ----- ----- ----- -----
|
||||||
|
+--> PUTCH/SPRINTF
|
||||||
|
|
||||||
|
PUTCH/SPRINTF ----- ----- ----- -----
|
||||||
|
|
||||||
|
strlen?_/STRLEN ----- ----- ----- -----
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PUBLIC SYMBOLS OF MODULE: .\Objects\STC32G_PWM_TEST (main)
|
||||||
|
|
||||||
|
|
||||||
|
VALUE CLASS TYPE PUBLIC SYMBOL NAME
|
||||||
|
=================================================
|
||||||
|
000000FFH NUMBER --- ?C?CODESEG
|
||||||
|
00FF004CH CODE --- ?C?PRNFMT
|
||||||
|
00FF0000H CODE --- ?C?STARTUP
|
||||||
|
00000001H NUMBER --- ?C?XDATASEG
|
||||||
|
00FF0000H CODE --- ?C_STARTUP
|
||||||
|
00000017H DATA --- ?sprintf?BYTE
|
||||||
|
00FF02E3H CODE --- _m
|
||||||
|
*SFR* 000000E0H DATA BYTE ACC
|
||||||
|
*SFR* 000000BCH DATA BYTE ADC_CONTR
|
||||||
|
*SFR* 000000DEH DATA BYTE ADCCFG
|
||||||
|
*SFR* 000000EFH DATA BYTE AUXINTIF
|
||||||
|
*SFR* 0000008EH DATA BYTE AUXR
|
||||||
|
*SFR* 00000097H DATA BYTE AUXR2
|
||||||
|
*SFR* 000000F0H DATA BYTE B
|
||||||
|
*SFR* 000000F1H DATA BYTE CANICR
|
||||||
|
*SFR* 000000EAH DATA BYTE CKCON
|
||||||
|
*SFR* 000000E6H DATA BYTE CMPCR1
|
||||||
|
*SFR* 000000E7H DATA BYTE CMPCR2
|
||||||
|
*SFR* 000000A8H.7 DATA BIT EA
|
||||||
|
*SFR* 000000BAH.7 DATA BIT EAXFR
|
||||||
|
*SFR* 000000C7H DATA BYTE IAP_CONTR
|
||||||
|
*SFR* 000000A8H DATA BYTE IE
|
||||||
|
*SFR* 000000AFH DATA BYTE IE2
|
||||||
|
*SFR* 0000008FH DATA BYTE INTCLKO
|
||||||
|
*SFR* 000000B8H DATA BYTE IP
|
||||||
|
*SFR* 000000B5H DATA BYTE IP2
|
||||||
|
*SFR* 000000B6H DATA BYTE IP2H
|
||||||
|
*SFR* 000000DFH DATA BYTE IP3
|
||||||
|
*SFR* 000000EEH DATA BYTE IP3H
|
||||||
|
*SFR* 000000B7H DATA BYTE IPH
|
||||||
|
*SFR* 0000009DH DATA BYTE IRCBAND
|
||||||
|
*SFR* 000000F9H DATA BYTE LINICR
|
||||||
|
00FF03C7H CODE --- main
|
||||||
|
*SFR* 00000080H DATA BYTE P0
|
||||||
|
*SFR* 00000094H DATA BYTE P0M0
|
||||||
|
L251 LINKER/LOCATER V4.66.93.0 04/01/2026 14:04:27 PAGE 3
|
||||||
|
|
||||||
|
|
||||||
|
*SFR* 00000093H DATA BYTE P0M1
|
||||||
|
*SFR* 00000090H DATA BYTE P1
|
||||||
|
*SFR* 00000092H DATA BYTE P1M0
|
||||||
|
*SFR* 00000091H DATA BYTE P1M1
|
||||||
|
*SFR* 000000A0H DATA BYTE P2
|
||||||
|
*SFR* 00000096H DATA BYTE P2M0
|
||||||
|
*SFR* 00000095H DATA BYTE P2M1
|
||||||
|
*SFR* 000000B0H DATA BYTE P3
|
||||||
|
*SFR* 000000B2H DATA BYTE P3M0
|
||||||
|
*SFR* 000000B1H DATA BYTE P3M1
|
||||||
|
*SFR* 000000C0H DATA BYTE P4
|
||||||
|
*SFR* 000000B4H DATA BYTE P4M0
|
||||||
|
*SFR* 000000B3H DATA BYTE P4M1
|
||||||
|
*SFR* 000000C8H DATA BYTE P5
|
||||||
|
*SFR* 000000CAH DATA BYTE P5M0
|
||||||
|
*SFR* 000000C9H DATA BYTE P5M1
|
||||||
|
*SFR* 000000E8H DATA BYTE P6
|
||||||
|
*SFR* 000000CCH DATA BYTE P6M0
|
||||||
|
*SFR* 000000CBH DATA BYTE P6M1
|
||||||
|
*SFR* 000000F8H DATA BYTE P7
|
||||||
|
*SFR* 000000E2H DATA BYTE P7M0
|
||||||
|
*SFR* 000000E1H DATA BYTE P7M1
|
||||||
|
*SFR* 000000A2H DATA BYTE P_SW1
|
||||||
|
*SFR* 000000BAH DATA BYTE P_SW2
|
||||||
|
*SFR* 000000BBH DATA BYTE P_SW3
|
||||||
|
*SFR* 00000087H DATA BYTE PCON
|
||||||
|
*SFR* 000000D0H DATA BYTE PSW
|
||||||
|
*SFR* 000000FFH DATA BYTE RSTCFG
|
||||||
|
*SFR* 0000009AH DATA BYTE S2CON
|
||||||
|
*SFR* 000000ACH DATA BYTE S3CON
|
||||||
|
*SFR* 000000FDH DATA BYTE S4CON
|
||||||
|
*SFR* 00000098H DATA BYTE SCON
|
||||||
|
*SFR* 000000CEH DATA BYTE SPCTL
|
||||||
|
00FF0003H CODE NEAR LAB sprintf
|
||||||
|
*SFR* 000000CDH DATA BYTE SPSTAT
|
||||||
|
00FF03DAH CODE --- strlen?_
|
||||||
|
*SFR* 000000DDH DATA BYTE T4T3M
|
||||||
|
*SFR* 00000088H DATA BYTE TCON
|
||||||
|
*SFR* 00000089H DATA BYTE TMOD
|
||||||
|
00FF0388H CODE --- UpdatePwm
|
||||||
|
*SFR* 000000F4H DATA BYTE USBCON
|
||||||
|
*SFR* 000000C1H DATA BYTE WDT_CONTR
|
||||||
|
*SFR* 000000E9H DATA BYTE WTST
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SYMBOL TABLE OF MODULE: .\Objects\STC32G_PWM_TEST (main)
|
||||||
|
|
||||||
|
VALUE REP CLASS TYPE SYMBOL NAME
|
||||||
|
====================================================
|
||||||
|
--- MODULE --- --- main
|
||||||
|
00FF0388H PUBLIC CODE --- UpdatePwm
|
||||||
|
00FF03C7H PUBLIC CODE --- main
|
||||||
|
00FF02E3H PUBLIC CODE --- _m
|
||||||
|
00000094H SFRSYM DATA BYTE P0M0
|
||||||
|
000000D0H SFRSYM DATA BYTE PSW
|
||||||
|
000000BAH.7 SFRSYM DATA BIT EAXFR
|
||||||
|
0000009DH SFRSYM DATA BYTE IRCBAND
|
||||||
|
00000097H SFRSYM DATA BYTE AUXR2
|
||||||
|
000000EAH SFRSYM DATA BYTE CKCON
|
||||||
|
000000EFH SFRSYM DATA BYTE AUXINTIF
|
||||||
|
000000FDH SFRSYM DATA BYTE S4CON
|
||||||
|
000000ACH SFRSYM DATA BYTE S3CON
|
||||||
|
0000009AH SFRSYM DATA BYTE S2CON
|
||||||
|
000000B7H SFRSYM DATA BYTE IPH
|
||||||
|
L251 LINKER/LOCATER V4.66.93.0 04/01/2026 14:04:27 PAGE 4
|
||||||
|
|
||||||
|
|
||||||
|
000000CDH SFRSYM DATA BYTE SPSTAT
|
||||||
|
000000DDH SFRSYM DATA BYTE T4T3M
|
||||||
|
000000C1H SFRSYM DATA BYTE WDT_CONTR
|
||||||
|
000000E9H SFRSYM DATA BYTE WTST
|
||||||
|
000000DFH SFRSYM DATA BYTE IP3
|
||||||
|
000000F4H SFRSYM DATA BYTE USBCON
|
||||||
|
000000B5H SFRSYM DATA BYTE IP2
|
||||||
|
000000FFH SFRSYM DATA BYTE RSTCFG
|
||||||
|
000000E0H SFRSYM DATA BYTE ACC
|
||||||
|
000000C7H SFRSYM DATA BYTE IAP_CONTR
|
||||||
|
000000F9H SFRSYM DATA BYTE LINICR
|
||||||
|
0000008EH SFRSYM DATA BYTE AUXR
|
||||||
|
000000F0H SFRSYM DATA BYTE B
|
||||||
|
000000AFH SFRSYM DATA BYTE IE2
|
||||||
|
00000088H SFRSYM DATA BYTE TCON
|
||||||
|
00000089H SFRSYM DATA BYTE TMOD
|
||||||
|
00000098H SFRSYM DATA BYTE SCON
|
||||||
|
000000F1H SFRSYM DATA BYTE CANICR
|
||||||
|
00000087H SFRSYM DATA BYTE PCON
|
||||||
|
000000BCH SFRSYM DATA BYTE ADC_CONTR
|
||||||
|
000000E7H SFRSYM DATA BYTE CMPCR2
|
||||||
|
000000E6H SFRSYM DATA BYTE CMPCR1
|
||||||
|
000000DEH SFRSYM DATA BYTE ADCCFG
|
||||||
|
000000B8H SFRSYM DATA BYTE IP
|
||||||
|
0000008FH SFRSYM DATA BYTE INTCLKO
|
||||||
|
000000EEH SFRSYM DATA BYTE IP3H
|
||||||
|
000000B6H SFRSYM DATA BYTE IP2H
|
||||||
|
000000A8H SFRSYM DATA BYTE IE
|
||||||
|
000000BBH SFRSYM DATA BYTE P_SW3
|
||||||
|
000000BAH SFRSYM DATA BYTE P_SW2
|
||||||
|
000000A2H SFRSYM DATA BYTE P_SW1
|
||||||
|
000000CEH SFRSYM DATA BYTE SPCTL
|
||||||
|
000000F8H SFRSYM DATA BYTE P7
|
||||||
|
000000A8H.7 SFRSYM DATA BIT EA
|
||||||
|
000000E1H SFRSYM DATA BYTE P7M1
|
||||||
|
000000E8H SFRSYM DATA BYTE P6
|
||||||
|
000000C8H SFRSYM DATA BYTE P5
|
||||||
|
000000CBH SFRSYM DATA BYTE P6M1
|
||||||
|
000000E2H SFRSYM DATA BYTE P7M0
|
||||||
|
000000C0H SFRSYM DATA BYTE P4
|
||||||
|
000000C9H SFRSYM DATA BYTE P5M1
|
||||||
|
000000CCH SFRSYM DATA BYTE P6M0
|
||||||
|
000000B0H SFRSYM DATA BYTE P3
|
||||||
|
000000B3H SFRSYM DATA BYTE P4M1
|
||||||
|
000000CAH SFRSYM DATA BYTE P5M0
|
||||||
|
000000A0H SFRSYM DATA BYTE P2
|
||||||
|
000000B1H SFRSYM DATA BYTE P3M1
|
||||||
|
000000B4H SFRSYM DATA BYTE P4M0
|
||||||
|
00000090H SFRSYM DATA BYTE P1
|
||||||
|
00000095H SFRSYM DATA BYTE P2M1
|
||||||
|
000000B2H SFRSYM DATA BYTE P3M0
|
||||||
|
00000080H SFRSYM DATA BYTE P0
|
||||||
|
00000091H SFRSYM DATA BYTE P1M1
|
||||||
|
00000096H SFRSYM DATA BYTE P2M0
|
||||||
|
00000092H SFRSYM DATA BYTE P1M0
|
||||||
|
00000093H SFRSYM DATA BYTE P0M1
|
||||||
|
|
||||||
|
00FF03C7H BLOCK CODE --- LVL=0
|
||||||
|
00FF03C7H LINE CODE --- #30
|
||||||
|
--- BLOCKEND --- --- LVL=0
|
||||||
|
|
||||||
|
00FF02E3H BLOCK CODE --- LVL=0
|
||||||
|
00FF02E3H LINE CODE --- #30
|
||||||
|
00FF02E3H LINE CODE --- #32
|
||||||
|
00FF02E6H LINE CODE --- #33
|
||||||
|
L251 LINKER/LOCATER V4.66.93.0 04/01/2026 14:04:27 PAGE 5
|
||||||
|
|
||||||
|
|
||||||
|
00FF02E9H LINE CODE --- #34
|
||||||
|
00FF02ECH LINE CODE --- #37
|
||||||
|
00FF02F2H LINE CODE --- #38
|
||||||
|
00FF02F8H LINE CODE --- #39
|
||||||
|
00FF02FEH LINE CODE --- #40
|
||||||
|
00FF0304H LINE CODE --- #41
|
||||||
|
00FF030AH LINE CODE --- #42
|
||||||
|
00FF0310H LINE CODE --- #43
|
||||||
|
00FF0316H LINE CODE --- #44
|
||||||
|
00FF031CH LINE CODE --- #47
|
||||||
|
00FF0328H LINE CODE --- #48
|
||||||
|
00FF0330H LINE CODE --- #50
|
||||||
|
00FF0338H LINE CODE --- #51
|
||||||
|
00FF0345H LINE CODE --- #52
|
||||||
|
00FF034AH LINE CODE --- #54
|
||||||
|
00FF0352H LINE CODE --- #55
|
||||||
|
00FF035AH LINE CODE --- #58
|
||||||
|
00FF0362H LINE CODE --- #59
|
||||||
|
00FF036BH LINE CODE --- #61
|
||||||
|
00FF036EH LINE CODE --- #63
|
||||||
|
00FF037BH LINE CODE --- #64
|
||||||
|
00FF0384H LINE CODE --- #66
|
||||||
|
00FF0386H LINE CODE --- #68
|
||||||
|
00FF0386H LINE CODE --- #71
|
||||||
|
--- BLOCKEND --- --- LVL=0
|
||||||
|
|
||||||
|
00FF0388H BLOCK CODE --- LVL=0
|
||||||
|
00FF0388H LINE CODE --- #78
|
||||||
|
00FF0388H LINE CODE --- #81
|
||||||
|
00FF0395H LINE CODE --- #82
|
||||||
|
00FF039EH LINE CODE --- #85
|
||||||
|
00FF03A7H LINE CODE --- #86
|
||||||
|
00FF03B0H LINE CODE --- #87
|
||||||
|
--- BLOCKEND --- --- LVL=0
|
||||||
|
|
||||||
|
--- MODULE --- --- ?C_START
|
||||||
|
00FF0000H PUBLIC CODE --- ?C?STARTUP
|
||||||
|
00FF0000H PUBLIC CODE --- ?C_STARTUP
|
||||||
|
|
||||||
|
--- MODULE --- --- SPRINTF
|
||||||
|
00000017H PUBLIC DATA --- ?SPRINTF?BYTE
|
||||||
|
00FF0003H PUBLIC CODE NEAR LAB SPRINTF
|
||||||
|
|
||||||
|
--- MODULE --- --- STRLEN
|
||||||
|
00FF03DAH PUBLIC CODE --- strlen?_
|
||||||
|
|
||||||
|
--- MODULE --- --- ?C?PRNFMT
|
||||||
|
00FF004CH PUBLIC CODE --- ?C?PRNFMT
|
||||||
|
|
||||||
|
Program Size: data=23.0 edata+hdata=256 xdata=0 const=6 code=1002
|
||||||
|
L251 RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||||
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)
|
||||||
BIN
Objects/STC32G_PWM_TEST
Normal file
BIN
Objects/STC32G_PWM_TEST
Normal file
Binary file not shown.
34
Objects/STC32G_PWM_TEST.build_log.htm
Normal file
34
Objects/STC32G_PWM_TEST.build_log.htm
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<pre>
|
||||||
|
<h1><EFBFBD>Vision Build Log</h1>
|
||||||
|
<h2>Tool Versions:</h2>
|
||||||
|
IDE-Version: <20><>Vision V5.43.1.0
|
||||||
|
Copyright (C) 2025 ARM Ltd and ARM Germany GmbH. All rights reserved.
|
||||||
|
License Information: x xtell, x, LIC=BU28G-VQVBG-RERH4-FXFNW-8VHYH-D518X
|
||||||
|
|
||||||
|
Tool Versions:
|
||||||
|
Toolchain: PK251 Prof. Developers Kit Version: 5.60.0.0
|
||||||
|
Toolchain Path: C:\Keil_v5\C251\BIN
|
||||||
|
C Compiler: C251.exe V5.60.0.0
|
||||||
|
Assembler: A251.exe V4.69.13.0
|
||||||
|
Linker/Locator: L251.exe V4.66.93.0
|
||||||
|
Library Manager: LIB251.exe V4.30.1.0
|
||||||
|
Hex Converter: OH251.exe V1.47.0.0
|
||||||
|
CPU DLL: S251.DLL V3.129.0.0
|
||||||
|
Dialog DLL: DCORE51.DLL V2.81.6.0
|
||||||
|
<h2>Project:</h2>
|
||||||
|
C:\workfile\STC-Test\4.1_STC32G\STC32G_PWM_TEST.uvproj
|
||||||
|
Project File Date: 04/01/2026
|
||||||
|
|
||||||
|
<h2>Output:</h2>
|
||||||
|
Rebuild target 'Target_1'
|
||||||
|
compiling main.c...
|
||||||
|
linking...
|
||||||
|
Program Size: data=23.0 edata+hdata=256 xdata=0 const=6 code=1002
|
||||||
|
creating hex file from ".\Objects\STC32G_PWM_TEST"...
|
||||||
|
".\Objects\STC32G_PWM_TEST" - 0 Error(s), 0 Warning(s).
|
||||||
|
Build Time Elapsed: 00:00:00
|
||||||
|
</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
64
Objects/STC32G_PWM_TEST.hex
Normal file
64
Objects/STC32G_PWM_TEST.hex
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
:100000000203B17DC37DA27EB400177E940012026C
|
||||||
|
:10001000004C4005E47AC9B0227AC9B00BC422541E
|
||||||
|
:100020000F2490D43440D430F30CBEB0414007BE0E
|
||||||
|
:10003000B05B500224204CCC68021BC00B84D389D7
|
||||||
|
:10004000944CCC680B742012003680F5CA3B6D8846
|
||||||
|
:100050009F337CAE7EA9B00BA47007C37D38DA3B1A
|
||||||
|
:100060008994B42569C2F37EA9B00BA4A5F824D065
|
||||||
|
:10007000BEB00A501B7E500A20F60DAC5CA52D7C4C
|
||||||
|
:10008000CB70034EF00180DDAC5DA52D7CDB80D50F
|
||||||
|
:1000900024CFBEB01AA5E850055E00DFD2F390026F
|
||||||
|
:1000A000B2A3E4936011BCB078F77414934CAB30F6
|
||||||
|
:1000B000F6B34EF08080AEA3E4936010BCB078F746
|
||||||
|
:1000C0007413937C3B741D937C2B89147CB0801338
|
||||||
|
:1000D000742012003620F205BEC00250F31BB50991
|
||||||
|
:1000E000BB00011200360200411BB50BB8104D11C8
|
||||||
|
:1000F00078047E14800020F21E4CCC681A7D31E416
|
||||||
|
:100100007E39804C8868070B3404BCBD78F2C2F697
|
||||||
|
:10011000CA19120214DA197E19B060CACA1912007B
|
||||||
|
:1001200036DA190B144CDD68EE1BD078EA80B77E06
|
||||||
|
:10013000101080037E10085EB05F800AD2F67E1039
|
||||||
|
:100140000A80057E100AC2F66D119F117E00201BE9
|
||||||
|
:10015000B47EB97030F6021A3720F1051BB47EB9AF
|
||||||
|
:100160006030F6041A261A2430F0051BB50BB820AF
|
||||||
|
:10017000A5EC3382F692F6500A7CEA9F229F217FFB
|
||||||
|
:10018000127CAE4C44780F7C457C567C676C772E95
|
||||||
|
:1001900000F878EF80122F117CB3337C3B9CB14088
|
||||||
|
:1001A000047C3B0B70A5D8EE7CB230E005DAB8C415
|
||||||
|
:1001B0004C3BCA380B207E00207E3000BE18000069
|
||||||
|
:1001C00078C1BE1008780730F404C2F480B5CA289C
|
||||||
|
:1001D0007CB2BCBD38027CBD120214DA28BC2D50A2
|
||||||
|
:1001E0000A1BD0E4CA2812001F80F07CB213DAB8D0
|
||||||
|
:1001F0004004C4CAB8C4CA28BEF08040095CDD7897
|
||||||
|
:1002000005A5DA0260065EF07F12001FDA28A5DA83
|
||||||
|
:10021000DA020041BEF001680F30F402240220F53A
|
||||||
|
:100220000620F70330F6010420F229BCBC5025CA91
|
||||||
|
:10023000B87CBF13B0E67420501174307C8A5E80A5
|
||||||
|
:10024000F068081202545EA00F8003120036DAB87C
|
||||||
|
:10025000BCBC78DB30F40F7430120036745830F3C5
|
||||||
|
:1002600002747812003630F605742D020036742BB5
|
||||||
|
:1002700020F5F8742020F7F3221BB47EB9B010F1FA
|
||||||
|
:10028000021BB420F60B30E704F404D2F27CCB80DE
|
||||||
|
:100290000520E7057CDB0200655EF07F80F81BB57A
|
||||||
|
:1002A0000BB81030F0076D221B18200B151B18809F
|
||||||
|
:1002B0000200502D2B204C4248232E0053584F440F
|
||||||
|
:1002C000494355502A4E000420800102001040E9A5
|
||||||
|
:1002D0002F343C3CD5432F799E00010101010001E0
|
||||||
|
:1002E00001020275E900A9D7BA75EA007593007595
|
||||||
|
:1002F000940075910075920075950075960075B122
|
||||||
|
:100300000075B20075B30075B40075C90075CA00F8
|
||||||
|
:1003100075CB0075CC0075E10075E200E47E34FE1B
|
||||||
|
:10032000B17E24007E7A1BB07E1BB044017A1BB0E4
|
||||||
|
:10033000E47E34FECC7A1BB074687E14FEC87E0462
|
||||||
|
:10034000007E7A0BB074017A1BB0E47E34FEB27A80
|
||||||
|
:100350001BB07E1BB044027A1BB0E47E34FED07A20
|
||||||
|
:100360001BB074EF7E34FED17A1BB0120388748008
|
||||||
|
:100370007E34FEDD7E24007E7A1BB074817E34FEE6
|
||||||
|
:10038000C07A1BB0D2AF80FE74077E34FED27E24CA
|
||||||
|
:10039000007E7A1BB074CF7E34FED37A1BB0740219
|
||||||
|
:1003A0007E34FED57A1BB074587E34FED67A1BB0EC
|
||||||
|
:1003B000227584017E44041FE47A49B01B4478F915
|
||||||
|
:1003C0007EF800160203C71202E36D337E24800418
|
||||||
|
:1003D0001200037E3480040203DA7D236D33800231
|
||||||
|
:0A03E0000B347E29B00B2470F722C5
|
||||||
|
:00000001FF
|
||||||
5
Objects/STC32G_PWM_TEST.lnp
Normal file
5
Objects/STC32G_PWM_TEST.lnp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
".\Objects\main.obj"
|
||||||
|
TO ".\Objects\STC32G_PWM_TEST"
|
||||||
|
PRINT(".\Listings\STC32G_PWM_TEST.map") CASE
|
||||||
|
CLASSES (EDATA (0x0-0xFFF),
|
||||||
|
HDATA (0x0-0xFFF))
|
||||||
BIN
Objects/main.crf
Normal file
BIN
Objects/main.crf
Normal file
Binary file not shown.
BIN
Objects/main.obj
Normal file
BIN
Objects/main.obj
Normal file
Binary file not shown.
1878
STC32G_PWM_TEST.uvgui.xtell
Normal file
1878
STC32G_PWM_TEST.uvgui.xtell
Normal file
File diff suppressed because one or more lines are too long
185
STC32G_PWM_TEST.uvopt
Normal file
185
STC32G_PWM_TEST.uvopt
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||||
|
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
|
||||||
|
|
||||||
|
<SchemaVersion>1.0</SchemaVersion>
|
||||||
|
|
||||||
|
<Header>### uVision Project, (C) Keil Software</Header>
|
||||||
|
|
||||||
|
<Extensions>
|
||||||
|
<cExt>*.c</cExt>
|
||||||
|
<aExt>*.s*; *.src; *.a*</aExt>
|
||||||
|
<oExt>*.obj; *.o</oExt>
|
||||||
|
<lExt>*.lib</lExt>
|
||||||
|
<tExt>*.txt; *.h; *.inc; *.md</tExt>
|
||||||
|
<pExt>*.plm</pExt>
|
||||||
|
<CppX>*.cpp; *.cc; *.cxx</CppX>
|
||||||
|
<nMigrate>0</nMigrate>
|
||||||
|
</Extensions>
|
||||||
|
|
||||||
|
<DaveTm>
|
||||||
|
<dwLowDateTime>0</dwLowDateTime>
|
||||||
|
<dwHighDateTime>0</dwHighDateTime>
|
||||||
|
</DaveTm>
|
||||||
|
|
||||||
|
<Target>
|
||||||
|
<TargetName>Target_1</TargetName>
|
||||||
|
<ToolsetNumber>0x1</ToolsetNumber>
|
||||||
|
<ToolsetName>MCS-251</ToolsetName>
|
||||||
|
<TargetOption>
|
||||||
|
<CLK251>35000000</CLK251>
|
||||||
|
<OPTTT>
|
||||||
|
<gFlags>1</gFlags>
|
||||||
|
<BeepAtEnd>1</BeepAtEnd>
|
||||||
|
<RunSim>1</RunSim>
|
||||||
|
<RunTarget>0</RunTarget>
|
||||||
|
<RunAbUc>0</RunAbUc>
|
||||||
|
</OPTTT>
|
||||||
|
<OPTHX>
|
||||||
|
<HexSelection>0</HexSelection>
|
||||||
|
<FlashByte>65535</FlashByte>
|
||||||
|
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||||
|
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||||
|
<HexOffset>0</HexOffset>
|
||||||
|
</OPTHX>
|
||||||
|
<OPTLEX>
|
||||||
|
<PageWidth>120</PageWidth>
|
||||||
|
<PageLength>65</PageLength>
|
||||||
|
<TabStop>8</TabStop>
|
||||||
|
<ListingPath>.\Listings\</ListingPath>
|
||||||
|
</OPTLEX>
|
||||||
|
<ListingPage>
|
||||||
|
<CreateCListing>1</CreateCListing>
|
||||||
|
<CreateAListing>1</CreateAListing>
|
||||||
|
<CreateLListing>1</CreateLListing>
|
||||||
|
<CreateIListing>0</CreateIListing>
|
||||||
|
<AsmCond>1</AsmCond>
|
||||||
|
<AsmSymb>1</AsmSymb>
|
||||||
|
<AsmXref>0</AsmXref>
|
||||||
|
<CCond>1</CCond>
|
||||||
|
<CCode>0</CCode>
|
||||||
|
<CListInc>0</CListInc>
|
||||||
|
<CSymb>0</CSymb>
|
||||||
|
<LinkerCodeListing>0</LinkerCodeListing>
|
||||||
|
</ListingPage>
|
||||||
|
<OPTXL>
|
||||||
|
<LMap>1</LMap>
|
||||||
|
<LComments>1</LComments>
|
||||||
|
<LGenerateSymbols>1</LGenerateSymbols>
|
||||||
|
<LLibSym>1</LLibSym>
|
||||||
|
<LLines>1</LLines>
|
||||||
|
<LLocSym>1</LLocSym>
|
||||||
|
<LPubSym>1</LPubSym>
|
||||||
|
<LXref>0</LXref>
|
||||||
|
<LExpSel>0</LExpSel>
|
||||||
|
</OPTXL>
|
||||||
|
<OPTFL>
|
||||||
|
<tvExp>1</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<IsCurrentTarget>1</IsCurrentTarget>
|
||||||
|
</OPTFL>
|
||||||
|
<CpuCode>255</CpuCode>
|
||||||
|
<DebugOpt>
|
||||||
|
<uSim>1</uSim>
|
||||||
|
<uTrg>0</uTrg>
|
||||||
|
<sLdApp>1</sLdApp>
|
||||||
|
<sGomain>1</sGomain>
|
||||||
|
<sRbreak>1</sRbreak>
|
||||||
|
<sRwatch>1</sRwatch>
|
||||||
|
<sRmem>1</sRmem>
|
||||||
|
<sRfunc>1</sRfunc>
|
||||||
|
<sRbox>1</sRbox>
|
||||||
|
<tLdApp>1</tLdApp>
|
||||||
|
<tGomain>0</tGomain>
|
||||||
|
<tRbreak>1</tRbreak>
|
||||||
|
<tRwatch>1</tRwatch>
|
||||||
|
<tRmem>1</tRmem>
|
||||||
|
<tRfunc>0</tRfunc>
|
||||||
|
<tRbox>1</tRbox>
|
||||||
|
<tRtrace>1</tRtrace>
|
||||||
|
<sRSysVw>1</sRSysVw>
|
||||||
|
<tRSysVw>1</tRSysVw>
|
||||||
|
<sRunDeb>0</sRunDeb>
|
||||||
|
<sLrtime>0</sLrtime>
|
||||||
|
<bEvRecOn>1</bEvRecOn>
|
||||||
|
<bSchkAxf>0</bSchkAxf>
|
||||||
|
<bTchkAxf>0</bTchkAxf>
|
||||||
|
<nTsel>-1</nTsel>
|
||||||
|
<sDll></sDll>
|
||||||
|
<sDllPa></sDllPa>
|
||||||
|
<sDlgDll></sDlgDll>
|
||||||
|
<sDlgPa></sDlgPa>
|
||||||
|
<sIfile></sIfile>
|
||||||
|
<tDll></tDll>
|
||||||
|
<tDllPa></tDllPa>
|
||||||
|
<tDlgDll></tDlgDll>
|
||||||
|
<tDlgPa></tDlgPa>
|
||||||
|
<tIfile></tIfile>
|
||||||
|
<pMon></pMon>
|
||||||
|
</DebugOpt>
|
||||||
|
<Breakpoint/>
|
||||||
|
<Tracepoint>
|
||||||
|
<THDelay>0</THDelay>
|
||||||
|
</Tracepoint>
|
||||||
|
<DebugFlag>
|
||||||
|
<trace>0</trace>
|
||||||
|
<periodic>1</periodic>
|
||||||
|
<aLwin>0</aLwin>
|
||||||
|
<aCover>0</aCover>
|
||||||
|
<aSer1>0</aSer1>
|
||||||
|
<aSer2>0</aSer2>
|
||||||
|
<aPa>0</aPa>
|
||||||
|
<viewmode>0</viewmode>
|
||||||
|
<vrSel>0</vrSel>
|
||||||
|
<aSym>0</aSym>
|
||||||
|
<aTbox>0</aTbox>
|
||||||
|
<AscS1>0</AscS1>
|
||||||
|
<AscS2>0</AscS2>
|
||||||
|
<AscS3>0</AscS3>
|
||||||
|
<aSer3>0</aSer3>
|
||||||
|
<eProf>0</eProf>
|
||||||
|
<aLa>0</aLa>
|
||||||
|
<aPa1>0</aPa1>
|
||||||
|
<AscS4>0</AscS4>
|
||||||
|
<aSer4>0</aSer4>
|
||||||
|
<StkLoc>0</StkLoc>
|
||||||
|
<TrcWin>0</TrcWin>
|
||||||
|
<newCpu>0</newCpu>
|
||||||
|
<uProt>0</uProt>
|
||||||
|
</DebugFlag>
|
||||||
|
<LintExecutable></LintExecutable>
|
||||||
|
<LintConfigFile></LintConfigFile>
|
||||||
|
<bLintAuto>0</bLintAuto>
|
||||||
|
<bAutoGenD>0</bAutoGenD>
|
||||||
|
<LntExFlags>0</LntExFlags>
|
||||||
|
<pMisraName></pMisraName>
|
||||||
|
<pszMrule></pszMrule>
|
||||||
|
<pSingCmds></pSingCmds>
|
||||||
|
<pMultCmds></pMultCmds>
|
||||||
|
<pMisraNamep></pMisraNamep>
|
||||||
|
<pszMrulep></pszMrulep>
|
||||||
|
<pSingCmdsp></pSingCmdsp>
|
||||||
|
<pMultCmdsp></pMultCmdsp>
|
||||||
|
</TargetOption>
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Group>
|
||||||
|
<GroupName>Source Group 1</GroupName>
|
||||||
|
<tvExp>1</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<cbSel>0</cbSel>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>1</GroupNumber>
|
||||||
|
<FileNumber>1</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>.\main.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>main.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
</Group>
|
||||||
|
|
||||||
|
</ProjectOpt>
|
||||||
338
STC32G_PWM_TEST.uvproj
Normal file
338
STC32G_PWM_TEST.uvproj
Normal file
@ -0,0 +1,338 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||||
|
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||||
|
|
||||||
|
<SchemaVersion>1.1</SchemaVersion>
|
||||||
|
|
||||||
|
<Header>### uVision Project, (C) Keil Software</Header>
|
||||||
|
|
||||||
|
<Targets>
|
||||||
|
<Target>
|
||||||
|
<TargetName>Target_1</TargetName>
|
||||||
|
<ToolsetNumber>0x1</ToolsetNumber>
|
||||||
|
<ToolsetName>MCS-251</ToolsetName>
|
||||||
|
<uAC6>0</uAC6>
|
||||||
|
<TargetOption>
|
||||||
|
<TargetCommonOption>
|
||||||
|
<Device>STC32G12K128 Series</Device>
|
||||||
|
<Vendor>STC</Vendor>
|
||||||
|
<Cpu>IRAM(0-0xFFF) XRAM(0x10000-0x11FFF) IROM(0xFE0000-0xFFFFFF) CLOCK(35000000)</Cpu>
|
||||||
|
<FlashUtilSpec></FlashUtilSpec>
|
||||||
|
<StartupFile>"LIB\STARTUP251.ASM" ("80251 Startup Code")</StartupFile>
|
||||||
|
<FlashDriverDll></FlashDriverDll>
|
||||||
|
<DeviceId>63457</DeviceId>
|
||||||
|
<RegisterFile>STC32G.H</RegisterFile>
|
||||||
|
<MemoryEnv></MemoryEnv>
|
||||||
|
<Cmp></Cmp>
|
||||||
|
<Asm></Asm>
|
||||||
|
<Linker></Linker>
|
||||||
|
<OHString></OHString>
|
||||||
|
<InfinionOptionDll></InfinionOptionDll>
|
||||||
|
<SLE66CMisc></SLE66CMisc>
|
||||||
|
<SLE66AMisc></SLE66AMisc>
|
||||||
|
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||||
|
<SFDFile></SFDFile>
|
||||||
|
<bCustSvd>0</bCustSvd>
|
||||||
|
<UseEnv>0</UseEnv>
|
||||||
|
<BinPath></BinPath>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
<LibPath></LibPath>
|
||||||
|
<RegisterFilePath>STC\</RegisterFilePath>
|
||||||
|
<DBRegisterFilePath>STC\</DBRegisterFilePath>
|
||||||
|
<TargetStatus>
|
||||||
|
<Error>0</Error>
|
||||||
|
<ExitCodeStop>0</ExitCodeStop>
|
||||||
|
<ButtonStop>0</ButtonStop>
|
||||||
|
<NotGenerated>0</NotGenerated>
|
||||||
|
<InvalidFlash>1</InvalidFlash>
|
||||||
|
</TargetStatus>
|
||||||
|
<OutputDirectory>.\Objects\</OutputDirectory>
|
||||||
|
<OutputName>STC32G_PWM_TEST</OutputName>
|
||||||
|
<CreateExecutable>1</CreateExecutable>
|
||||||
|
<CreateLib>0</CreateLib>
|
||||||
|
<CreateHexFile>1</CreateHexFile>
|
||||||
|
<DebugInformation>1</DebugInformation>
|
||||||
|
<BrowseInformation>1</BrowseInformation>
|
||||||
|
<ListingPath>.\Listings\</ListingPath>
|
||||||
|
<HexFormatSelection>0</HexFormatSelection>
|
||||||
|
<Merge32K>0</Merge32K>
|
||||||
|
<CreateBatchFile>0</CreateBatchFile>
|
||||||
|
<BeforeCompile>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name></UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
<nStopU1X>0</nStopU1X>
|
||||||
|
<nStopU2X>0</nStopU2X>
|
||||||
|
</BeforeCompile>
|
||||||
|
<BeforeMake>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name></UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
<nStopB1X>0</nStopB1X>
|
||||||
|
<nStopB2X>0</nStopB2X>
|
||||||
|
</BeforeMake>
|
||||||
|
<AfterMake>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name></UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
<nStopA1X>0</nStopA1X>
|
||||||
|
<nStopA2X>0</nStopA2X>
|
||||||
|
</AfterMake>
|
||||||
|
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||||
|
<SVCSIdString></SVCSIdString>
|
||||||
|
</TargetCommonOption>
|
||||||
|
<CommonProperty>
|
||||||
|
<UseCPPCompiler>0</UseCPPCompiler>
|
||||||
|
<RVCTCodeConst>0</RVCTCodeConst>
|
||||||
|
<RVCTZI>0</RVCTZI>
|
||||||
|
<RVCTOtherData>0</RVCTOtherData>
|
||||||
|
<ModuleSelection>0</ModuleSelection>
|
||||||
|
<IncludeInBuild>1</IncludeInBuild>
|
||||||
|
<AlwaysBuild>0</AlwaysBuild>
|
||||||
|
<GenerateAssemblyFile>0</GenerateAssemblyFile>
|
||||||
|
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||||
|
<PublicsOnly>0</PublicsOnly>
|
||||||
|
<StopOnExitCode>3</StopOnExitCode>
|
||||||
|
<CustomArgument></CustomArgument>
|
||||||
|
<IncludeLibraryModules></IncludeLibraryModules>
|
||||||
|
<ComprImg>1</ComprImg>
|
||||||
|
<BankNo>65535</BankNo>
|
||||||
|
</CommonProperty>
|
||||||
|
<DllOption>
|
||||||
|
<SimDllName>S251.DLL</SimDllName>
|
||||||
|
<SimDllArguments></SimDllArguments>
|
||||||
|
<SimDlgDll>DCORE51.DLL</SimDlgDll>
|
||||||
|
<SimDlgDllArguments>-p251</SimDlgDllArguments>
|
||||||
|
<TargetDllName>S251.DLL</TargetDllName>
|
||||||
|
<TargetDllArguments></TargetDllArguments>
|
||||||
|
<TargetDlgDll>TCORE51.DLL</TargetDlgDll>
|
||||||
|
<TargetDlgDllArguments>-p251</TargetDlgDllArguments>
|
||||||
|
</DllOption>
|
||||||
|
<DebugOption>
|
||||||
|
<OPTHX>
|
||||||
|
<HexSelection>0</HexSelection>
|
||||||
|
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||||
|
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||||
|
<HexOffset>0</HexOffset>
|
||||||
|
<Oh166RecLen>16</Oh166RecLen>
|
||||||
|
</OPTHX>
|
||||||
|
<Simulator>
|
||||||
|
<UseSimulator>1</UseSimulator>
|
||||||
|
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||||
|
<RunToMain>1</RunToMain>
|
||||||
|
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||||
|
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||||
|
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||||
|
<RestoreFunctions>1</RestoreFunctions>
|
||||||
|
<RestoreToolbox>1</RestoreToolbox>
|
||||||
|
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||||
|
<RestoreSysVw>1</RestoreSysVw>
|
||||||
|
</Simulator>
|
||||||
|
<Target>
|
||||||
|
<UseTarget>0</UseTarget>
|
||||||
|
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||||
|
<RunToMain>0</RunToMain>
|
||||||
|
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||||
|
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||||
|
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||||
|
<RestoreFunctions>0</RestoreFunctions>
|
||||||
|
<RestoreToolbox>1</RestoreToolbox>
|
||||||
|
<RestoreTracepoints>1</RestoreTracepoints>
|
||||||
|
<RestoreSysVw>1</RestoreSysVw>
|
||||||
|
</Target>
|
||||||
|
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||||
|
<TargetSelection>-1</TargetSelection>
|
||||||
|
<SimDlls>
|
||||||
|
<CpuDll></CpuDll>
|
||||||
|
<CpuDllArguments></CpuDllArguments>
|
||||||
|
<PeripheralDll></PeripheralDll>
|
||||||
|
<PeripheralDllArguments></PeripheralDllArguments>
|
||||||
|
<InitializationFile></InitializationFile>
|
||||||
|
</SimDlls>
|
||||||
|
<TargetDlls>
|
||||||
|
<CpuDll></CpuDll>
|
||||||
|
<CpuDllArguments></CpuDllArguments>
|
||||||
|
<PeripheralDll></PeripheralDll>
|
||||||
|
<PeripheralDllArguments></PeripheralDllArguments>
|
||||||
|
<InitializationFile></InitializationFile>
|
||||||
|
<Driver></Driver>
|
||||||
|
</TargetDlls>
|
||||||
|
</DebugOption>
|
||||||
|
<Utilities>
|
||||||
|
<Flash1>
|
||||||
|
<UseTargetDll>0</UseTargetDll>
|
||||||
|
<UseExternalTool>0</UseExternalTool>
|
||||||
|
<RunIndependent>0</RunIndependent>
|
||||||
|
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||||
|
<Capability>0</Capability>
|
||||||
|
<DriverSelection>-1</DriverSelection>
|
||||||
|
</Flash1>
|
||||||
|
<bUseTDR>0</bUseTDR>
|
||||||
|
<Flash2></Flash2>
|
||||||
|
<Flash3></Flash3>
|
||||||
|
<Flash4></Flash4>
|
||||||
|
<pFcarmOut></pFcarmOut>
|
||||||
|
<pFcarmGrp></pFcarmGrp>
|
||||||
|
<pFcArmRoot></pFcArmRoot>
|
||||||
|
<FcArmLst>0</FcArmLst>
|
||||||
|
</Utilities>
|
||||||
|
<Target251>
|
||||||
|
<Target251Misc>
|
||||||
|
<MemoryModel>0</MemoryModel>
|
||||||
|
<RTOS>0</RTOS>
|
||||||
|
<RomSize>3</RomSize>
|
||||||
|
<NearDataHold>0</NearDataHold>
|
||||||
|
<XDataHold>0</XDataHold>
|
||||||
|
<FarDataHold>0</FarDataHold>
|
||||||
|
<uocRom>0</uocRom>
|
||||||
|
<uocXRAM>0</uocXRAM>
|
||||||
|
<uSrcBin>1</uSrcBin>
|
||||||
|
<uFrame4>0</uFrame4>
|
||||||
|
<hadIRAM>1</hadIRAM>
|
||||||
|
<hadXRAM>1</hadXRAM>
|
||||||
|
<hadIROM>1</hadIROM>
|
||||||
|
<Use_Code_Banking>0</Use_Code_Banking>
|
||||||
|
<uCC7>0</uCC7>
|
||||||
|
<fp_hp>0</fp_hp>
|
||||||
|
<CBANKS2>0</CBANKS2>
|
||||||
|
<OnChipMemories>
|
||||||
|
<RCB>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x10000</Size>
|
||||||
|
</RCB>
|
||||||
|
<IROM>
|
||||||
|
<Type>1</Type>
|
||||||
|
<StartAddress>0xfe0000</StartAddress>
|
||||||
|
<Size>0x20000</Size>
|
||||||
|
</IROM>
|
||||||
|
<IRAM>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x1000</Size>
|
||||||
|
</IRAM>
|
||||||
|
<XRAM>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x10000</StartAddress>
|
||||||
|
<Size>0x2000</Size>
|
||||||
|
</XRAM>
|
||||||
|
<Ocm1>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm1>
|
||||||
|
<Ocm2>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm2>
|
||||||
|
<Ocm3>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm3>
|
||||||
|
<Ocm4>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm4>
|
||||||
|
<Ocm5>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm5>
|
||||||
|
<Ocm6>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm6>
|
||||||
|
</OnChipMemories>
|
||||||
|
</Target251Misc>
|
||||||
|
<C251>
|
||||||
|
<RegColor>0</RegColor>
|
||||||
|
<uOrder>0</uOrder>
|
||||||
|
<uAlias>1</uAlias>
|
||||||
|
<uRentF>0</uRentF>
|
||||||
|
<uUch>0</uUch>
|
||||||
|
<uFlt64>0</uFlt64>
|
||||||
|
<Fuzzy>3</Fuzzy>
|
||||||
|
<Optim>7</Optim>
|
||||||
|
<wLevel>2</wLevel>
|
||||||
|
<SizSpd>1</SizSpd>
|
||||||
|
<AcaOpt>0</AcaOpt>
|
||||||
|
<VariousControls>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<Define></Define>
|
||||||
|
<Undefine></Undefine>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
</VariousControls>
|
||||||
|
</C251>
|
||||||
|
<Ax51>
|
||||||
|
<UseMpl>0</UseMpl>
|
||||||
|
<UseStandard>1</UseStandard>
|
||||||
|
<UseCase>0</UseCase>
|
||||||
|
<UseMod51>0</UseMod51>
|
||||||
|
<VariousControls>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<Define></Define>
|
||||||
|
<Undefine></Undefine>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
</VariousControls>
|
||||||
|
</Ax51>
|
||||||
|
<Lx51>
|
||||||
|
<useFile>0</useFile>
|
||||||
|
<linkonly>0</linkonly>
|
||||||
|
<UseMemoryFromTarget>1</UseMemoryFromTarget>
|
||||||
|
<CaseSensitiveSymbols>1</CaseSensitiveSymbols>
|
||||||
|
<WarningLevel>2</WarningLevel>
|
||||||
|
<DataOverlaying>1</DataOverlaying>
|
||||||
|
<OverlayString></OverlayString>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<DisableWarningNumbers></DisableWarningNumbers>
|
||||||
|
<LinkerCmdFile></LinkerCmdFile>
|
||||||
|
<Assign></Assign>
|
||||||
|
<ReserveString></ReserveString>
|
||||||
|
<CClasses></CClasses>
|
||||||
|
<UserClasses></UserClasses>
|
||||||
|
<CSection></CSection>
|
||||||
|
<UserSection></UserSection>
|
||||||
|
<CodeBaseAddress></CodeBaseAddress>
|
||||||
|
<XDataBaseAddress></XDataBaseAddress>
|
||||||
|
<PDataBaseAddress></PDataBaseAddress>
|
||||||
|
<BitBaseAddress></BitBaseAddress>
|
||||||
|
<DataBaseAddress></DataBaseAddress>
|
||||||
|
<IDataBaseAddress></IDataBaseAddress>
|
||||||
|
<Precede></Precede>
|
||||||
|
<Stack></Stack>
|
||||||
|
<CodeSegmentName></CodeSegmentName>
|
||||||
|
<XDataSegmentName></XDataSegmentName>
|
||||||
|
<BitSegmentName></BitSegmentName>
|
||||||
|
<DataSegmentName></DataSegmentName>
|
||||||
|
<IDataSegmentName></IDataSegmentName>
|
||||||
|
</Lx51>
|
||||||
|
</Target251>
|
||||||
|
</TargetOption>
|
||||||
|
<Groups>
|
||||||
|
<Group>
|
||||||
|
<GroupName>Source Group 1</GroupName>
|
||||||
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>main.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>.\main.c</FilePath>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
</Group>
|
||||||
|
</Groups>
|
||||||
|
</Target>
|
||||||
|
</Targets>
|
||||||
|
|
||||||
|
</Project>
|
||||||
87
main.c
Normal file
87
main.c
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
#include "stc32g.h"
|
||||||
|
#include "intrins.h"
|
||||||
|
|
||||||
|
#define MAIN_Fosc 24000000L // <20><>ʱ<EFBFBD><CAB1>24MHz
|
||||||
|
typedef unsigned char u8;
|
||||||
|
typedef unsigned int u16;
|
||||||
|
typedef unsigned long u32;
|
||||||
|
|
||||||
|
/**************************** <20>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD> 400Hz PWM ****************************/
|
||||||
|
//#define PWM_FREQ 400 // Ŀ<><C4BF>Ƶ<EFBFBD><C6B5>
|
||||||
|
//#define PERIOD 59999 // 24MHz<48><7A> 400Hz <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ֵ
|
||||||
|
//#define DUTY 18000 // 30%ռ<>ձ<EFBFBD> (PERIOD/2)
|
||||||
|
|
||||||
|
/**************************** <20><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>50Hz / 30%ռ<>ձ<EFBFBD> ****************************/
|
||||||
|
#define PWM_FREQ 50
|
||||||
|
#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>
|
||||||
|
#define PERIOD 1999 // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ65535<33><35><EFBFBD>Ϲ棩
|
||||||
|
#define DUTY 600 // 30%ռ<>ձ<EFBFBD> (1999*0.3=600)
|
||||||
|
|
||||||
|
/**************************** <20>ٷ<EFBFBD><D9B7>궨<EFBFBD><EAB6A8> <20><><EFBFBD><EFBFBD> ****************************/
|
||||||
|
#define PWM1_0 0x00 //P:P1.0 N:P1.1
|
||||||
|
#define PWM1_1 0x01 //P:P2.0 N:P2.1
|
||||||
|
#define PWM1_2 0x02 //P:P6.0 N:P6.1 ? <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
#define ENO1P 0x01
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void UpdatePwm(void);
|
||||||
|
|
||||||
|
/******************** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> **************************/
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
WTST = 0;
|
||||||
|
EAXFR = 1; // <20><>չ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
||||||
|
CKCON = 0;
|
||||||
|
|
||||||
|
// IO<49>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||||
|
P0M1 = 0x00; P0M0 = 0x00;
|
||||||
|
P1M1 = 0x00; P1M0 = 0x00;
|
||||||
|
P2M1 = 0x00; P2M0 = 0x00;
|
||||||
|
P3M1 = 0x00; P3M0 = 0x00;
|
||||||
|
P4M1 = 0x00; P4M0 = 0x00;
|
||||||
|
P5M1 = 0x00; P5M0 = 0x00;
|
||||||
|
P6M1 = 0x00; P6M0 = 0x00;
|
||||||
|
P7M1 = 0x00; P7M0 = 0x00;
|
||||||
|
|
||||||
|
// ===================== PWM Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =====================
|
||||||
|
PWMA_ENO = 0x00;
|
||||||
|
PWMA_ENO |= ENO1P; // ʹ<><CAB9>PWM1ͨ<31><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
PWMA_CCER1 = 0x00;
|
||||||
|
PWMA_CCMR1 = 0x68; // PWMģʽ1<CABD><31><EFBFBD><EFBFBD>
|
||||||
|
PWMA_CCER1 = 0x01; // <20>ߵ<EFBFBD>ƽ<EFBFBD><C6BD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
PWMA_PS = 0x00;
|
||||||
|
PWMA_PS |= PWM1_2; // ? ѡ<><D1A1>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>P6.0 <20><><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
// ========== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>֮ǰȱʧ<C8B1><CAA7><EFBFBD><EFBFBD> ==========
|
||||||
|
PWMA_PSCRH = (u8)(PSC_VAL >> 8);
|
||||||
|
PWMA_PSCRL = (u8)PSC_VAL;
|
||||||
|
|
||||||
|
UpdatePwm(); // <20><><EFBFBD><EFBFBD>400Hz/50%ռ<>ձȲ<D5B1><C8B2><EFBFBD>
|
||||||
|
|
||||||
|
PWMA_BKR = 0x80; // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
|
||||||
|
PWMA_CR1 = 0x81; // <20>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD>رյ<D8B1><D5B5><EFBFBD><EFBFBD><EFBFBD>ģʽ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PWM
|
||||||
|
|
||||||
|
EA = 1; // <20><><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>κβ<CEBA><CEB2><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>400Hz PWM
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//========================================================================
|
||||||
|
// <20><><EFBFBD><EFBFBD>: UpdatePwm(void)
|
||||||
|
// <20><><EFBFBD><EFBFBD>: <20>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD> 400Hz + 50%ռ<>ձ<EFBFBD>
|
||||||
|
//========================================================================
|
||||||
|
void UpdatePwm(void)
|
||||||
|
{
|
||||||
|
// <20>̶<EFBFBD><CCB6><EFBFBD><EFBFBD>ڣ<EFBFBD>59999 <20><> 400Hz
|
||||||
|
PWMA_ARRH = (u8)(PERIOD >> 8);
|
||||||
|
PWMA_ARRL = (u8)PERIOD;
|
||||||
|
|
||||||
|
// <20>̶<EFBFBD>ռ<EFBFBD>ձȣ<D5B1>29999 <20><> 50%
|
||||||
|
PWMA_CCR1H = (u8)(DUTY >> 8);
|
||||||
|
PWMA_CCR1L = (u8)DUTY;
|
||||||
|
}
|
||||||
98
测试结果.txt
Normal file
98
测试结果.txt
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
4.1 测试
|
||||||
|
使用STC32G12K128开发板进行PWM测试:
|
||||||
|
在无晶振情况下,测试PWM输出400HZ,50HZ频率PWM波,误差均小于0.02%
|
||||||
|
使用引脚:P6.0
|
||||||
|
|
||||||
|
代码如下:
|
||||||
|
#include "stc32g.h"
|
||||||
|
#include "intrins.h"
|
||||||
|
|
||||||
|
#define MAIN_Fosc 24000000L // 主时钟24MHz
|
||||||
|
typedef unsigned char u8;
|
||||||
|
typedef unsigned int u16;
|
||||||
|
typedef unsigned long u32;
|
||||||
|
|
||||||
|
/**************************** 固定参数 400Hz PWM ****************************/
|
||||||
|
//#define PWM_FREQ 400 // 目标频率
|
||||||
|
//#define PERIOD 59999 // 24MHz下 400Hz 对应周期值
|
||||||
|
//#define DUTY 18000 // 30%占空比 (PERIOD/2)
|
||||||
|
|
||||||
|
/**************************** 正确参数:50Hz / 30%占空比 ****************************/
|
||||||
|
#define PWM_FREQ 50
|
||||||
|
#define PSC_VAL 239 // 预分频值(核心修复:解决16位溢出)
|
||||||
|
#define PERIOD 1999 // 周期值(16位寄存器最大值65535,合规)
|
||||||
|
#define DUTY 600 // 30%占空比 (1999*0.3=600)
|
||||||
|
|
||||||
|
/**************************** 官方宏定义 保留 ****************************/
|
||||||
|
#define PWM1_0 0x00 //P:P1.0 N:P1.1
|
||||||
|
#define PWM1_1 0x01 //P:P2.0 N:P2.1
|
||||||
|
#define PWM1_2 0x02 //P:P6.0 N:P6.1 ? 最终输出引脚
|
||||||
|
#define ENO1P 0x01
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
void UpdatePwm(void);
|
||||||
|
|
||||||
|
/******************** 主函数 **************************/
|
||||||
|
void main(void)
|
||||||
|
{
|
||||||
|
WTST = 0;
|
||||||
|
EAXFR = 1; // 扩展寄存器访问使能
|
||||||
|
CKCON = 0;
|
||||||
|
|
||||||
|
// IO口初始化
|
||||||
|
P0M1 = 0x00; P0M0 = 0x00;
|
||||||
|
P1M1 = 0x00; P1M0 = 0x00;
|
||||||
|
P2M1 = 0x00; P2M0 = 0x00;
|
||||||
|
P3M1 = 0x00; P3M0 = 0x00;
|
||||||
|
P4M1 = 0x00; P4M0 = 0x00;
|
||||||
|
P5M1 = 0x00; P5M0 = 0x00;
|
||||||
|
P6M1 = 0x00; P6M0 = 0x00;
|
||||||
|
P7M1 = 0x00; P7M0 = 0x00;
|
||||||
|
|
||||||
|
// ===================== PWM 硬件配置 =====================
|
||||||
|
PWMA_ENO = 0x00;
|
||||||
|
PWMA_ENO |= ENO1P; // 使能PWM1通道输出
|
||||||
|
|
||||||
|
PWMA_CCER1 = 0x00;
|
||||||
|
PWMA_CCMR1 = 0x68; // PWM模式1输出
|
||||||
|
PWMA_CCER1 = 0x01; // 高电平有效(正常输出)
|
||||||
|
|
||||||
|
PWMA_PS = 0x00;
|
||||||
|
PWMA_PS |= PWM1_2; // ? 选择通道:P6.0 输出
|
||||||
|
|
||||||
|
// ========== 核心修复:配置预分频器(之前缺失!) ==========
|
||||||
|
PWMA_PSCRH = (u8)(PSC_VAL >> 8);
|
||||||
|
PWMA_PSCRL = (u8)PSC_VAL;
|
||||||
|
|
||||||
|
UpdatePwm(); // 加载400Hz/50%占空比参数
|
||||||
|
|
||||||
|
PWMA_BKR = 0x80; // 使能主输出(必备)
|
||||||
|
PWMA_CR1 = 0x81; // 关键:关闭单脉冲模式 → 连续输出PWM
|
||||||
|
|
||||||
|
EA = 1; // 开总中断(保留框架)
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
// 无需任何操作,硬件连续输出400Hz PWM
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//========================================================================
|
||||||
|
// 函数: UpdatePwm(void)
|
||||||
|
// 功能: 固定配置 400Hz + 50%占空比
|
||||||
|
//========================================================================
|
||||||
|
void UpdatePwm(void)
|
||||||
|
{
|
||||||
|
// 固定周期:59999 → 400Hz
|
||||||
|
PWMA_ARRH = (u8)(PERIOD >> 8);
|
||||||
|
PWMA_ARRL = (u8)PERIOD;
|
||||||
|
|
||||||
|
// 固定占空比:29999 → 50%
|
||||||
|
PWMA_CCR1H = (u8)(DUTY >> 8);
|
||||||
|
PWMA_CCR1L = (u8)DUTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#################################################################################
|
||||||
|
后面接上11.0592Mhz外部晶振,再测试PWM没有成功,在代码中对占空比进行调整均始终输出3.3V,PWM频率没有使用示波器测量
|
||||||
|
由于时间原因,外部晶振策略搁置
|
||||||
Reference in New Issue
Block a user