GPIO
This commit is contained in:
BIN
1gpio/bin/gpio.bin
Executable file
BIN
1gpio/bin/gpio.bin
Executable file
Binary file not shown.
BIN
1gpio/bin/gpio.elf
Executable file
BIN
1gpio/bin/gpio.elf
Executable file
Binary file not shown.
218
1gpio/bin/gpio.hex
Normal file
218
1gpio/bin/gpio.hex
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
:020000040800F2
|
||||||
|
:1000000000000220BD090008B9090008B70900086E
|
||||||
|
:10001000B7090008B7090008B70900080000000088
|
||||||
|
:10002000000000000000000000000000B909000806
|
||||||
|
:10003000B909000800000000B9090008C904000857
|
||||||
|
:10004000B7090008B7090008B7090008B709000890
|
||||||
|
:10005000B7090008B7090008B7090008B709000880
|
||||||
|
:10006000B7090008B7090008B7090008B709000870
|
||||||
|
:10007000B7090008B7090008B7090008B709000860
|
||||||
|
:10008000B7090008B7090008B7090008B709000850
|
||||||
|
:10009000B7090008B7090008B7090008B709000840
|
||||||
|
:1000A000B7090008B7090008B7090008B709000830
|
||||||
|
:1000B000B7090008B7090008B7090008B709000820
|
||||||
|
:1000C000B7090008B7090008B7090008B709000810
|
||||||
|
:1000D000B7090008B7090008B7090008B709000800
|
||||||
|
:1000E000B7090008B7090008B7090008B7090008F0
|
||||||
|
:1000F000B7090008B7090008B7090008B7090008E0
|
||||||
|
:10010000B7090008B7090008B7090008B7090008CF
|
||||||
|
:10011000B7090008B7090008B7090008B7090008BF
|
||||||
|
:10012000B7090008B7090008B7090008B7090008AF
|
||||||
|
:10013000B7090008B7090008B7090008B70900089F
|
||||||
|
:10014000B7090008B7090008B7090008B70900088F
|
||||||
|
:10015000B7090008B7090008B7090008B70900087F
|
||||||
|
:10016000B7090008B7090008B7090008B70900086F
|
||||||
|
:10017000B7090008B7090008B7090008B70900085F
|
||||||
|
:10018000B7090008B7090008B7090008B70900084F
|
||||||
|
:10019000B7090008B7090008B7090008B70900083F
|
||||||
|
:1001A000B7090008B7090008B7090008B70900082F
|
||||||
|
:1001B000B7090008B7090008B7090008B70900081F
|
||||||
|
:1001C000B7090008B7090008B7090008B70900080F
|
||||||
|
:1001D000B7090008B7090008B7090008B7090008FF
|
||||||
|
:1001E000B7090008B7090008B7090008B7090008EF
|
||||||
|
:1001F000B7090008B7090008B7090008B7090008DF
|
||||||
|
:10020000B7090008B7090008B7090008B7090008CE
|
||||||
|
:10021000B7090008B7090008B7090008B7090008BE
|
||||||
|
:10022000B7090008B7090008B7090008B7090008AE
|
||||||
|
:10023000B7090008B7090008B7090008B70900089E
|
||||||
|
:10024000B7090008B7090008B7090008B70900088E
|
||||||
|
:10025000B7090008B7090008B7090008B70900087E
|
||||||
|
:10026000B7090008B7090008B7090008B70900086E
|
||||||
|
:10027000B7090008B7090008B7090008B70900085E
|
||||||
|
:10028000B7090008B7090008B7090008B70900084E
|
||||||
|
:10029000B7090008B709000880B500AF41F604406F
|
||||||
|
:1002A00000F07CFB082300220121104800F02BF90C
|
||||||
|
:1002B0000823002200210D4800F045F908210B48D1
|
||||||
|
:1002C00000F012F90A4B1B68094A43F4807313606B
|
||||||
|
:1002D00041F6024000F062FB4FF40053022200217D
|
||||||
|
:1002E000044800F010F900BF80BD00BF00100258A4
|
||||||
|
:1002F000004802580008025880B500AF4FF4407023
|
||||||
|
:1003000000F0CFFB00F02CF84FF47A7000F0BCF84E
|
||||||
|
:10031000FFF7C2FF4FF400510F4800F0E8F8034622
|
||||||
|
:10032000002BF7D0142000F095F84FF400510A4844
|
||||||
|
:1003300000F0DDF80346002B03D00821074800F049
|
||||||
|
:10034000D9F800BF4FF40051034800F0D0F803463D
|
||||||
|
:10035000002BF7D1DEE700BF00080258001002585A
|
||||||
|
:1003600080B58CB000AF3B462C220021184600F02F
|
||||||
|
:1003700091FC41F6074000F011FB41F6816000F06E
|
||||||
|
:100380000DFB022301220121304800F0BCF80223BA
|
||||||
|
:10039000022200212D4800F0D6F80023FB6203E082
|
||||||
|
:1003A00000BFFB6A0133FB62FB6A132BF8D9022101
|
||||||
|
:1003B000264800F097F800233B7002237B70244B03
|
||||||
|
:1003C0007B6005233B72C0237B8102233B730223A6
|
||||||
|
:1003D0007B730223BB7320233B7481237B82022324
|
||||||
|
:1003E0003B7502237B750223BB7520233B7681235B
|
||||||
|
:1003F0007B8302233B7702237B770223BB77002397
|
||||||
|
:1004000087F82030082387F82130042387F822302A
|
||||||
|
:10041000042387F82330042387F82430042387F843
|
||||||
|
:100420002530042387F82630012387F8273002235C
|
||||||
|
:1004300087F82830002387F829303B46184600F01B
|
||||||
|
:1004400063F900BF3037BD4680BD00BF001C0258B5
|
||||||
|
:1004500040787D0180B485B000AF7860094B1B689F
|
||||||
|
:10046000FB6001E030BF00BF064B1A68FB68D31A7F
|
||||||
|
:100470007A689A42F6D800BF00BF1437BD465DF8CF
|
||||||
|
:10048000047B70472400002080B582B000AF786004
|
||||||
|
:10049000042000F0E9FA002000F042FA02467B68EE
|
||||||
|
:1004A000B2FBF3F3013B184600F0D8FA00F0F4FA7F
|
||||||
|
:1004B0000F21FF2000F0FEFA00F0E0FA00F0E5FA6C
|
||||||
|
:1004C00000BF0837BD4680BD80B400AF044B1B6839
|
||||||
|
:1004D0000133034A136000BFBD465DF8047B7047DB
|
||||||
|
:1004E0002400002081617047090481617047006920
|
||||||
|
:1004F00008407047436901EA030221EA030141EA27
|
||||||
|
:100500000241816170472DE9F04105680026C46809
|
||||||
|
:100510004FF0030E43FA06F7FF070DD577000EFAEA
|
||||||
|
:1005200007FC01FA07F802FA07F725EA0C0524EAA6
|
||||||
|
:100530000C0448EA05053C430136102EEAD105605B
|
||||||
|
:10054000C460BDE8F081012941680CBF194399439B
|
||||||
|
:10055000F0B5416000248168032643FA04F5ED07F5
|
||||||
|
:1005600007D5650006FA05F702FA05F521EA070145
|
||||||
|
:1005700029430134102CF0D18160F0BD2DE9F04306
|
||||||
|
:1005800091F800C0BCF1000F00F0A580012A26D030
|
||||||
|
:10059000574B9E1F022A18BF1E46013A554D002395
|
||||||
|
:1005A000B1F8028045F8323008F1FF3355F8324097
|
||||||
|
:1005B0002343D4B245F83230A700B0FBFCF34E48D9
|
||||||
|
:1005C000FFB2B3FBF0FCACF1030001284B4808D8A4
|
||||||
|
:1005D0000423D0F82CE4BB404EEA03030DE0484E60
|
||||||
|
:1005E000DBE7ACF1050EBEF1030F76D80823D0F897
|
||||||
|
:1005F0002C9403FA07FE4EEA0903C0F82C340CFBD6
|
||||||
|
:1006000008F3B3F5D27F09D8DFF8F0C00220DCF898
|
||||||
|
:100610002CE4B84040EA0E00CCF82C0467000879BE
|
||||||
|
:1006200004EB4404E4B2B0B155F832C000F1FF3E2F
|
||||||
|
:100630004CEA4E2CDFF8C4E045F832C04FF4803C61
|
||||||
|
:10064000DEF82C840CFA04FCB3FBF0F04CEA080C46
|
||||||
|
:10065000CEF82CC430804879B0B155F832C000F1E2
|
||||||
|
:10066000FF3E4CEA0E4CDFF894E045F832C04FF400
|
||||||
|
:10067000003CDEF82C840CFA04FCB3FBF0F04CEAEE
|
||||||
|
:10068000080CCEF82CC47080897999B155F83200E5
|
||||||
|
:1006900001F1FF3C40EA0C6045F832004FF4802243
|
||||||
|
:1006A0001648A240D0F82C54B3FBF1F32A43C0F80B
|
||||||
|
:1006B0002C24B380114AFFB24FF08073D2F800149B
|
||||||
|
:1006C000BB400B43C2F800344FF00073BB40D2F87C
|
||||||
|
:1006D00000141942FBD0BDE8F083DFF828E0734531
|
||||||
|
:1006E0008DD94FF00C0ED0F82C340EFA07FE73E7BC
|
||||||
|
:1006F0001A0000203044025840420F0000400258C7
|
||||||
|
:100700000E0000203F548900F8B5814B0446D3F811
|
||||||
|
:10071000002442F00102C3F80024D3F8102422F090
|
||||||
|
:100720000702C3F81024D3F8102412F0380FFAD1BE
|
||||||
|
:100730000122C3F8002494F8291094F8280000F04E
|
||||||
|
:100740002FFA94F8270000F057FA94F8260000F0EA
|
||||||
|
:10075000D3F994F82630002B00F0C58000F0BCF9E6
|
||||||
|
:1007600063688BB16A4BD3F8002442F48032C3F83B
|
||||||
|
:100770000024D3F800249203FBD563684FF47A7207
|
||||||
|
:10078000B3FBF2F3634A1384237C227A1B03617860
|
||||||
|
:1007900043EA0213227E0B4343EA02535C4AC2F847
|
||||||
|
:1007A0002834002900F0A2806568002304F10801C4
|
||||||
|
:1007B0002846C2F82C340122FFF7E0FE022204F1A1
|
||||||
|
:1007C00010012846FFF7DAFE2846032204F118013B
|
||||||
|
:1007D000FFF7D4FE23784F48002B40F08980C3896F
|
||||||
|
:1007E00094F8245000264A4F94F8201094F82120C1
|
||||||
|
:1007F00003800729C7F818644FEA0516D7F818C40C
|
||||||
|
:1008000046EA012646EA020646EA0C06C7F81864DC
|
||||||
|
:1008100006D90B2994BF0739063943FA01F18BB287
|
||||||
|
:10082000072A438009D90B2A95BF073A911F43FA3B
|
||||||
|
:1008300002F20B4194BF93B29BB2032D94F82310A4
|
||||||
|
:10084000334E8CBFEA1E1A464FF00005838084BFEA
|
||||||
|
:1008500043FA02F292B20329428194F82220C6F8A8
|
||||||
|
:100860001C544FEA01258CBF0339194645EA02158D
|
||||||
|
:10087000D6F81C7488BF43FA01F145EA070588BF22
|
||||||
|
:1008800089B2032AC6F81C548CBF033A1A46018168
|
||||||
|
:1008900088BF43FA02F294F8251088BF92B2032968
|
||||||
|
:1008A000C2801B4AD2F820444FF00004C2F8204412
|
||||||
|
:1008B000D2F8204444EA011484BF033943FA01F119
|
||||||
|
:1008C000C2F8204488BF8BB28381D2F8103443F041
|
||||||
|
:1008D0000303C2F81034D2F810340D4AC3F3C20334
|
||||||
|
:1008E000032B0FD1F8BD00F0FFF839E70A4D5CE7A4
|
||||||
|
:1008F000012B09BF63684023084AB3FBF2F308BF2A
|
||||||
|
:100900009BB26DE7D2F81034C3F3C203E8E700BF2F
|
||||||
|
:1009100000400258000000200090D00340420F0029
|
||||||
|
:1009200008B509282CD8DFE800F00A051C0A0D0DCF
|
||||||
|
:1009300010131619154B1888154B584308BD134B47
|
||||||
|
:100940005888F9E7114B9888F6E7104BD888F3E7F9
|
||||||
|
:100950000E4B1889F0E70D4B5889EDE70B4B988942
|
||||||
|
:10096000EAE70C4BD3F84C3413F0405FC3F3017249
|
||||||
|
:1009700008D0022A08D1054B188C4FF47A73DCE7B3
|
||||||
|
:1009800000F0A8F80448D9E70020D7E700000020CD
|
||||||
|
:1009900040420F00004002580090D003430901225A
|
||||||
|
:1009A00000F01F0003F1B043824003F511331968D2
|
||||||
|
:1009B0000A431A607047FEE77047000038B51D4AC9
|
||||||
|
:1009C0001D4B1E498B4220D31D4A0021934221D347
|
||||||
|
:1009D0004FF0E0231B4C1C4DD3F8142D42F4007251
|
||||||
|
:1009E000C3F8142DD3F8882D42F47002C3F8882D73
|
||||||
|
:1009F000AC4212D3154C164DAC4212D3154CFFF736
|
||||||
|
:100A00007BFC154DAC4210D338BD52F8040B43F8B3
|
||||||
|
:100A1000040BD7E743F8041BD8E754F8043B984786
|
||||||
|
:100A2000E6E754F8043B9847E6E754F8043B984758
|
||||||
|
:100A3000E8E700BF380D0008000000202400002077
|
||||||
|
:100A400028000020380D0008380D0008380D000877
|
||||||
|
:100A5000380D0008380D0008380D000820F07F40E0
|
||||||
|
:100A60004FF0E023586170474FF0E02200F004009F
|
||||||
|
:100A7000136923F004030343136170474FF0E0222E
|
||||||
|
:100A8000136943F00203136170474FF0E0221369CA
|
||||||
|
:100A900043F00103136170474FF0E02300229A6195
|
||||||
|
:100AA000704740F0BF604FF0E02340F40030C3F8DF
|
||||||
|
:100AB0000C0D7047952804D900F00F00044BC15469
|
||||||
|
:100AC000704700F1604000F564400170704700BF5E
|
||||||
|
:100AD00014ED00E0FEE70000024A136843F480735F
|
||||||
|
:100AE0001360704700200052024A136823F4807399
|
||||||
|
:100AF0001360704700200052034A136823F00F036D
|
||||||
|
:100B000003431360704700BF00200052044AD2F82C
|
||||||
|
:100B10000C3823F0070343F00203C2F80C38704787
|
||||||
|
:100B200000400258044AD2F80C3823F0070343F07F
|
||||||
|
:100B30000603C2F80C3870470040025808B50B0194
|
||||||
|
:100B400070B943F0040309485242D0F80C1802F07F
|
||||||
|
:100B5000020221F03F010A431A43C0F80C2808BDE5
|
||||||
|
:100B600009B9FFF7B7FF43F00C03ECE70040025868
|
||||||
|
:100B7000044AD2F80C3823F0070343F00103C2F80B
|
||||||
|
:100B80000C38704700400258044AD2F80C3823F061
|
||||||
|
:100B9000070343F00503C2F80C38704700400258C1
|
||||||
|
:100BA00008B5072807D8DFE800F0040C0F12121D63
|
||||||
|
:100BB0001D21FFF7B7FF0F4AD2F804389B04FBD57D
|
||||||
|
:100BC00008BDFFF7E1FFF6E7FFF7A0FFF3E7A0F1AD
|
||||||
|
:100BD000040C0021DCF1000242EB0C020020FFF7C4
|
||||||
|
:100BE000ADFFE8E7053842424241F7E7FFF7C0FFB3
|
||||||
|
:100BF000E1E700BF00400258F8B5074608B9FFF723
|
||||||
|
:100C000069FF204B421E204E1B68C3F30B03B3F554
|
||||||
|
:100C1000906F0FD1D6F818381C4923F440438A5CF2
|
||||||
|
:100C200043EA8233C6F81838174AD2F818389B04BA
|
||||||
|
:100C3000FBD5F8BD1649B3F58A6FD6F818588C5C09
|
||||||
|
:100C400025F440454FEA843418D141F68160FFF71E
|
||||||
|
:100C5000A5FE012F4FF0B0430AD145F44045C6F838
|
||||||
|
:100C60001858D3F82C2442F00102C3F82C24DBE7F7
|
||||||
|
:100C7000D3F82C2422F00102C3F82C242C43C6F80C
|
||||||
|
:100C80001848D1E70010005C00400258340D0008FD
|
||||||
|
:100C9000300D0008830730B546D08418844604E040
|
||||||
|
:100CA00003F8011B9D0704D09C46A4456346F7D179
|
||||||
|
:100CB00030BD013A0244A2EB0C02032A29D9CCB27E
|
||||||
|
:100CC00004EB04240F2A04EB04442FD9A2F1100CE6
|
||||||
|
:100CD0002CF00F0C03F11005AC44C3E90044C3E948
|
||||||
|
:100CE000024410336345F8D112F00C0F02F00F0EDE
|
||||||
|
:100CF00018D02EF0030C9C44AEF104051A4642F8BD
|
||||||
|
:100D0000044B6245FBD125F0030404330EF00302CB
|
||||||
|
:100D10002344002ACCD0C9B21A4403F8011B9342E1
|
||||||
|
:100D2000FBD130BD7246F4E70346C6E79646E0E7DE
|
||||||
|
:080D30000003020103020100AF
|
||||||
|
:100D380040004000400040004000400040000000EB
|
||||||
|
:100D4800000000000000000000000000000000009B
|
||||||
|
:040D58000000000097
|
||||||
|
:04000005080009BD29
|
||||||
|
:00000001FF
|
||||||
1902
1gpio/bin/gpio.list
Executable file
1902
1gpio/bin/gpio.list
Executable file
File diff suppressed because it is too large
Load Diff
1018
1gpio/bin/gpio.map
Normal file
1018
1gpio/bin/gpio.map
Normal file
File diff suppressed because it is too large
Load Diff
217
1gpio/bin/gpio.srec
Executable file
217
1gpio/bin/gpio.srec
Executable file
@@ -0,0 +1,217 @@
|
|||||||
|
S02B00002F686F6D652F74696D652F646F632F636F646566696C652F656D62652F426C6F672F73746D33322FBD
|
||||||
|
S3150800000000000220BD090008B9090008B709000860
|
||||||
|
S31508000010B7090008B7090008B7090008000000007A
|
||||||
|
S31508000020000000000000000000000000B9090008F8
|
||||||
|
S31508000030B909000800000000B9090008C904000849
|
||||||
|
S31508000040B7090008B7090008B7090008B709000882
|
||||||
|
S31508000050B7090008B7090008B7090008B709000872
|
||||||
|
S31508000060B7090008B7090008B7090008B709000862
|
||||||
|
S31508000070B7090008B7090008B7090008B709000852
|
||||||
|
S31508000080B7090008B7090008B7090008B709000842
|
||||||
|
S31508000090B7090008B7090008B7090008B709000832
|
||||||
|
S315080000A0B7090008B7090008B7090008B709000822
|
||||||
|
S315080000B0B7090008B7090008B7090008B709000812
|
||||||
|
S315080000C0B7090008B7090008B7090008B709000802
|
||||||
|
S315080000D0B7090008B7090008B7090008B7090008F2
|
||||||
|
S315080000E0B7090008B7090008B7090008B7090008E2
|
||||||
|
S315080000F0B7090008B7090008B7090008B7090008D2
|
||||||
|
S31508000100B7090008B7090008B7090008B7090008C1
|
||||||
|
S31508000110B7090008B7090008B7090008B7090008B1
|
||||||
|
S31508000120B7090008B7090008B7090008B7090008A1
|
||||||
|
S31508000130B7090008B7090008B7090008B709000891
|
||||||
|
S31508000140B7090008B7090008B7090008B709000881
|
||||||
|
S31508000150B7090008B7090008B7090008B709000871
|
||||||
|
S31508000160B7090008B7090008B7090008B709000861
|
||||||
|
S31508000170B7090008B7090008B7090008B709000851
|
||||||
|
S31508000180B7090008B7090008B7090008B709000841
|
||||||
|
S31508000190B7090008B7090008B7090008B709000831
|
||||||
|
S315080001A0B7090008B7090008B7090008B709000821
|
||||||
|
S315080001B0B7090008B7090008B7090008B709000811
|
||||||
|
S315080001C0B7090008B7090008B7090008B709000801
|
||||||
|
S315080001D0B7090008B7090008B7090008B7090008F1
|
||||||
|
S315080001E0B7090008B7090008B7090008B7090008E1
|
||||||
|
S315080001F0B7090008B7090008B7090008B7090008D1
|
||||||
|
S31508000200B7090008B7090008B7090008B7090008C0
|
||||||
|
S31508000210B7090008B7090008B7090008B7090008B0
|
||||||
|
S31508000220B7090008B7090008B7090008B7090008A0
|
||||||
|
S31508000230B7090008B7090008B7090008B709000890
|
||||||
|
S31508000240B7090008B7090008B7090008B709000880
|
||||||
|
S31508000250B7090008B7090008B7090008B709000870
|
||||||
|
S31508000260B7090008B7090008B7090008B709000860
|
||||||
|
S31508000270B7090008B7090008B7090008B709000850
|
||||||
|
S31508000280B7090008B7090008B7090008B709000840
|
||||||
|
S31508000290B7090008B709000880B500AF41F6044061
|
||||||
|
S315080002A000F07CFB082300220121104800F02BF9FE
|
||||||
|
S315080002B00823002200210D4800F045F908210B48C3
|
||||||
|
S315080002C000F012F90A4B1B68094A43F4807313605D
|
||||||
|
S315080002D041F6024000F062FB4FF40053022200216F
|
||||||
|
S315080002E0044800F010F900BF80BD00BF0010025896
|
||||||
|
S315080002F0004802580008025880B500AF4FF4407015
|
||||||
|
S3150800030000F0CFFB00F02CF84FF47A7000F0BCF840
|
||||||
|
S31508000310FFF7C2FF4FF400510F4800F0E8F8034614
|
||||||
|
S31508000320002BF7D0142000F095F84FF400510A4836
|
||||||
|
S3150800033000F0DDF80346002B03D00821074800F03B
|
||||||
|
S31508000340D9F800BF4FF40051034800F0D0F803462F
|
||||||
|
S31508000350002BF7D1DEE700BF00080258001002584C
|
||||||
|
S3150800036080B58CB000AF3B462C220021184600F021
|
||||||
|
S3150800037091FC41F6074000F011FB41F6816000F060
|
||||||
|
S315080003800DFB022301220121304800F0BCF80223AC
|
||||||
|
S31508000390022200212D4800F0D6F80023FB6203E074
|
||||||
|
S315080003A000BFFB6A0133FB62FB6A132BF8D90221F3
|
||||||
|
S315080003B0264800F097F800233B7002237B70244BF5
|
||||||
|
S315080003C07B6005233B72C0237B8102233B73022398
|
||||||
|
S315080003D07B730223BB7320233B7481237B82022316
|
||||||
|
S315080003E03B7502237B750223BB7520233B7681234D
|
||||||
|
S315080003F07B8302233B7702237B770223BB77002389
|
||||||
|
S3150800040087F82030082387F82130042387F822301C
|
||||||
|
S31508000410042387F82330042387F82430042387F835
|
||||||
|
S315080004202530042387F82630012387F8273002234E
|
||||||
|
S3150800043087F82830002387F829303B46184600F00D
|
||||||
|
S3150800044063F900BF3037BD4680BD00BF001C0258A7
|
||||||
|
S3150800045040787D0180B485B000AF7860094B1B6891
|
||||||
|
S31508000460FB6001E030BF00BF064B1A68FB68D31A71
|
||||||
|
S315080004707A689A42F6D800BF00BF1437BD465DF8C1
|
||||||
|
S31508000480047B70472400002080B582B000AF7860F6
|
||||||
|
S31508000490042000F0E9FA002000F042FA02467B68E0
|
||||||
|
S315080004A0B2FBF3F3013B184600F0D8FA00F0F4FA71
|
||||||
|
S315080004B00F21FF2000F0FEFA00F0E0FA00F0E5FA5E
|
||||||
|
S315080004C000BF0837BD4680BD80B400AF044B1B682B
|
||||||
|
S315080004D00133034A136000BFBD465DF8047B7047CD
|
||||||
|
S315080004E02400002081617047090481617047006912
|
||||||
|
S315080004F008407047436901EA030221EA030141EA19
|
||||||
|
S315080005000241816170472DE9F04105680026C468FB
|
||||||
|
S315080005104FF0030E43FA06F7FF070DD577000EFADC
|
||||||
|
S3150800052007FC01FA07F802FA07F725EA0C0524EA98
|
||||||
|
S315080005300C0448EA05053C430136102EEAD105604D
|
||||||
|
S31508000540C460BDE8F081012941680CBF194399438D
|
||||||
|
S31508000550F0B5416000248168032643FA04F5ED07E7
|
||||||
|
S3150800056007D5650006FA05F702FA05F521EA070137
|
||||||
|
S3150800057029430134102CF0D18160F0BD2DE9F043F8
|
||||||
|
S3150800058091F800C0BCF1000F00F0A580012A26D022
|
||||||
|
S31508000590574B9E1F022A18BF1E46013A554D002387
|
||||||
|
S315080005A0B1F8028045F8323008F1FF3355F8324089
|
||||||
|
S315080005B02343D4B245F83230A700B0FBFCF34E48CB
|
||||||
|
S315080005C0FFB2B3FBF0FCACF1030001284B4808D896
|
||||||
|
S315080005D00423D0F82CE4BB404EEA03030DE0484E52
|
||||||
|
S315080005E0DBE7ACF1050EBEF1030F76D80823D0F889
|
||||||
|
S315080005F02C9403FA07FE4EEA0903C0F82C340CFBC8
|
||||||
|
S3150800060008F3B3F5D27F09D8DFF8F0C00220DCF88A
|
||||||
|
S315080006102CE4B84040EA0E00CCF82C0467000879B0
|
||||||
|
S3150800062004EB4404E4B2B0B155F832C000F1FF3E21
|
||||||
|
S315080006304CEA4E2CDFF8C4E045F832C04FF4803C53
|
||||||
|
S31508000640DEF82C840CFA04FCB3FBF0F04CEA080C38
|
||||||
|
S31508000650CEF82CC430804879B0B155F832C000F1D4
|
||||||
|
S31508000660FF3E4CEA0E4CDFF894E045F832C04FF4F2
|
||||||
|
S31508000670003CDEF82C840CFA04FCB3FBF0F04CEAE0
|
||||||
|
S31508000680080CCEF82CC47080897999B155F83200D7
|
||||||
|
S3150800069001F1FF3C40EA0C6045F832004FF4802235
|
||||||
|
S315080006A01648A240D0F82C54B3FBF1F32A43C0F8FD
|
||||||
|
S315080006B02C24B380114AFFB24FF08073D2F800148D
|
||||||
|
S315080006C0BB400B43C2F800344FF00073BB40D2F86E
|
||||||
|
S315080006D000141942FBD0BDE8F083DFF828E0734523
|
||||||
|
S315080006E08DD94FF00C0ED0F82C340EFA07FE73E7AE
|
||||||
|
S315080006F01A0000203044025840420F0000400258B9
|
||||||
|
S315080007000E0000203F548900F8B5814B0446D3F803
|
||||||
|
S31508000710002442F00102C3F80024D3F8102422F082
|
||||||
|
S315080007200702C3F81024D3F8102412F0380FFAD1B0
|
||||||
|
S315080007300122C3F8002494F8291094F8280000F040
|
||||||
|
S315080007402FFA94F8270000F057FA94F8260000F0DC
|
||||||
|
S31508000750D3F994F82630002B00F0C58000F0BCF9D8
|
||||||
|
S3150800076063688BB16A4BD3F8002442F48032C3F82D
|
||||||
|
S315080007700024D3F800249203FBD563684FF47A72F9
|
||||||
|
S31508000780B3FBF2F3634A1384237C227A1B03617852
|
||||||
|
S3150800079043EA0213227E0B4343EA02535C4AC2F839
|
||||||
|
S315080007A02834002900F0A2806568002304F10801B6
|
||||||
|
S315080007B02846C2F82C340122FFF7E0FE022204F193
|
||||||
|
S315080007C010012846FFF7DAFE2846032204F118012D
|
||||||
|
S315080007D0FFF7D4FE23784F48002B40F08980C38961
|
||||||
|
S315080007E094F8245000264A4F94F8201094F82120B3
|
||||||
|
S315080007F003800729C7F818644FEA0516D7F818C4FE
|
||||||
|
S3150800080046EA012646EA020646EA0C06C7F81864CE
|
||||||
|
S3150800081006D90B2994BF0739063943FA01F18BB279
|
||||||
|
S31508000820072A438009D90B2A95BF073A911F43FA2D
|
||||||
|
S3150800083002F20B4194BF93B29BB2032D94F8231096
|
||||||
|
S31508000840334E8CBFEA1E1A464FF00005838084BFDC
|
||||||
|
S3150800085043FA02F292B20329428194F82220C6F89A
|
||||||
|
S315080008601C544FEA01258CBF0339194645EA02157F
|
||||||
|
S31508000870D6F81C7488BF43FA01F145EA070588BF14
|
||||||
|
S3150800088089B2032AC6F81C548CBF033A1A4601815A
|
||||||
|
S3150800089088BF43FA02F294F8251088BF92B203295A
|
||||||
|
S315080008A0C2801B4AD2F820444FF00004C2F8204404
|
||||||
|
S315080008B0D2F8204444EA011484BF033943FA01F10B
|
||||||
|
S315080008C0C2F8204488BF8BB28381D2F8103443F033
|
||||||
|
S315080008D00303C2F81034D2F810340D4AC3F3C20326
|
||||||
|
S315080008E0032B0FD1F8BD00F0FFF839E70A4D5CE796
|
||||||
|
S315080008F0012B09BF63684023084AB3FBF2F308BF1C
|
||||||
|
S315080009009BB26DE7D2F81034C3F3C203E8E700BF21
|
||||||
|
S3150800091000400258000000200090D00340420F001B
|
||||||
|
S3150800092008B509282CD8DFE800F00A051C0A0D0DC1
|
||||||
|
S3150800093010131619154B1888154B584308BD134B39
|
||||||
|
S315080009405888F9E7114B9888F6E7104BD888F3E7EB
|
||||||
|
S315080009500E4B1889F0E70D4B5889EDE70B4B988934
|
||||||
|
S31508000960EAE70C4BD3F84C3413F0405FC3F301723B
|
||||||
|
S3150800097008D0022A08D1054B188C4FF47A73DCE7A5
|
||||||
|
S3150800098000F0A8F80448D9E70020D7E700000020BF
|
||||||
|
S3150800099040420F00004002580090D003430901224C
|
||||||
|
S315080009A000F01F0003F1B043824003F511331968C4
|
||||||
|
S315080009B00A431A607047FEE77047000038B51D4ABB
|
||||||
|
S315080009C01D4B1E498B4220D31D4A0021934221D339
|
||||||
|
S315080009D04FF0E0231B4C1C4DD3F8142D42F4007243
|
||||||
|
S315080009E0C3F8142DD3F8882D42F47002C3F8882D65
|
||||||
|
S315080009F0AC4212D3154C164DAC4212D3154CFFF728
|
||||||
|
S31508000A007BFC154DAC4210D338BD52F8040B43F8A5
|
||||||
|
S31508000A10040BD7E743F8041BD8E754F8043B984778
|
||||||
|
S31508000A20E6E754F8043B9847E6E754F8043B98474A
|
||||||
|
S31508000A30E8E700BF380D0008000000202400002069
|
||||||
|
S31508000A4028000020380D0008380D0008380D000869
|
||||||
|
S31508000A50380D0008380D0008380D000820F07F40D2
|
||||||
|
S31508000A604FF0E023586170474FF0E02200F0040091
|
||||||
|
S31508000A70136923F004030343136170474FF0E02220
|
||||||
|
S31508000A80136943F00203136170474FF0E0221369BC
|
||||||
|
S31508000A9043F00103136170474FF0E02300229A6187
|
||||||
|
S31508000AA0704740F0BF604FF0E02340F40030C3F8D1
|
||||||
|
S31508000AB00C0D7047952804D900F00F00044BC1545B
|
||||||
|
S31508000AC0704700F1604000F564400170704700BF50
|
||||||
|
S31508000AD014ED00E0FEE70000024A136843F4807351
|
||||||
|
S31508000AE01360704700200052024A136823F480738B
|
||||||
|
S31508000AF01360704700200052034A136823F00F035F
|
||||||
|
S31508000B0003431360704700BF00200052044AD2F81E
|
||||||
|
S31508000B100C3823F0070343F00203C2F80C38704779
|
||||||
|
S31508000B2000400258044AD2F80C3823F0070343F071
|
||||||
|
S31508000B300603C2F80C3870470040025808B50B0186
|
||||||
|
S31508000B4070B943F0040309485242D0F80C1802F071
|
||||||
|
S31508000B50020221F03F010A431A43C0F80C2808BDD7
|
||||||
|
S31508000B6009B9FFF7B7FF43F00C03ECE7004002585A
|
||||||
|
S31508000B70044AD2F80C3823F0070343F00103C2F8FD
|
||||||
|
S31508000B800C38704700400258044AD2F80C3823F053
|
||||||
|
S31508000B90070343F00503C2F80C38704700400258B3
|
||||||
|
S31508000BA008B5072807D8DFE800F0040C0F12121D55
|
||||||
|
S31508000BB01D21FFF7B7FF0F4AD2F804389B04FBD56F
|
||||||
|
S31508000BC008BDFFF7E1FFF6E7FFF7A0FFF3E7A0F19F
|
||||||
|
S31508000BD0040C0021DCF1000242EB0C020020FFF7B6
|
||||||
|
S31508000BE0ADFFE8E7053842424241F7E7FFF7C0FFA5
|
||||||
|
S31508000BF0E1E700BF00400258F8B5074608B9FFF715
|
||||||
|
S31508000C0069FF204B421E204E1B68C3F30B03B3F546
|
||||||
|
S31508000C10906F0FD1D6F818381C4923F440438A5CE4
|
||||||
|
S31508000C2043EA8233C6F81838174AD2F818389B04AC
|
||||||
|
S31508000C30FBD5F8BD1649B3F58A6FD6F818588C5CFB
|
||||||
|
S31508000C4025F440454FEA843418D141F68160FFF710
|
||||||
|
S31508000C50A5FE012F4FF0B0430AD145F44045C6F82A
|
||||||
|
S31508000C601858D3F82C2442F00102C3F82C24DBE7E9
|
||||||
|
S31508000C70D3F82C2422F00102C3F82C242C43C6F8FE
|
||||||
|
S31508000C801848D1E70010005C00400258340D0008EF
|
||||||
|
S31508000C90300D0008830730B546D08418844604E032
|
||||||
|
S31508000CA003F8011B9D0704D09C46A4456346F7D16B
|
||||||
|
S31508000CB030BD013A0244A2EB0C02032A29D9CCB270
|
||||||
|
S31508000CC004EB04240F2A04EB04442FD9A2F1100CD8
|
||||||
|
S31508000CD02CF00F0C03F11005AC44C3E90044C3E93A
|
||||||
|
S31508000CE0024410336345F8D112F00C0F02F00F0ED0
|
||||||
|
S31508000CF018D02EF0030C9C44AEF104051A4642F8AF
|
||||||
|
S31508000D00044B6245FBD125F0030404330EF00302BD
|
||||||
|
S31508000D102344002ACCD0C9B21A4403F8011B9342D3
|
||||||
|
S31508000D20FBD130BD7246F4E70346C6E79646E0E7D0
|
||||||
|
S30D08000D300003020103020100A1
|
||||||
|
S31508000D3840004000400040004000400040000000DD
|
||||||
|
S31508000D48000000000000000000000000000000008D
|
||||||
|
S30908000D580000000089
|
||||||
|
S705080009BD2C
|
||||||
117
1gpio/cortex-m-generic.ld
Normal file
117
1gpio/cortex-m-generic.ld
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
rom (rx) : ORIGIN = 0x08000000, LENGTH = 0x200000 /* Flash 2MB */
|
||||||
|
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x20000 /* 128 KB */
|
||||||
|
ram2 (rwx) : ORIGIN = 0x24000000, LENGTH = 0x80000 /* 512 KB */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enforce emmition of the vector table. */
|
||||||
|
EXTERN (vector_table)
|
||||||
|
|
||||||
|
/* Define the entry point of the output file. */
|
||||||
|
ENTRY(reset_handler)
|
||||||
|
|
||||||
|
/* Define sections. */
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.text : {
|
||||||
|
*(.vectors) /* Vector table */
|
||||||
|
*(.text*) /* Program code */
|
||||||
|
. = ALIGN(4);
|
||||||
|
*(.rodata*) /* Read-only data */
|
||||||
|
. = ALIGN(4);
|
||||||
|
} >rom
|
||||||
|
|
||||||
|
/* C++ Static constructors/destructors, also used for __attribute__
|
||||||
|
* ((constructor)) and the likes */
|
||||||
|
.preinit_array : {
|
||||||
|
. = ALIGN(4);
|
||||||
|
__preinit_array_start = .;
|
||||||
|
KEEP (*(.preinit_array))
|
||||||
|
__preinit_array_end = .;
|
||||||
|
} >rom
|
||||||
|
.init_array : {
|
||||||
|
. = ALIGN(4);
|
||||||
|
__init_array_start = .;
|
||||||
|
KEEP (*(SORT(.init_array.*)))
|
||||||
|
KEEP (*(.init_array))
|
||||||
|
__init_array_end = .;
|
||||||
|
} >rom
|
||||||
|
.fini_array : {
|
||||||
|
. = ALIGN(4);
|
||||||
|
__fini_array_start = .;
|
||||||
|
KEEP (*(.fini_array))
|
||||||
|
KEEP (*(SORT(.fini_array.*)))
|
||||||
|
__fini_array_end = .;
|
||||||
|
} >rom
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Another section used by C++ stuff, appears when using newlib with
|
||||||
|
* 64bit (long long) printf support
|
||||||
|
*/
|
||||||
|
.ARM.extab : {
|
||||||
|
*(.ARM.extab*)
|
||||||
|
} >rom
|
||||||
|
.ARM.exidx : {
|
||||||
|
__exidx_start = .;
|
||||||
|
*(.ARM.exidx*)
|
||||||
|
__exidx_end = .;
|
||||||
|
} >rom
|
||||||
|
|
||||||
|
. = ALIGN(4);
|
||||||
|
_etext = .;
|
||||||
|
|
||||||
|
/* ram, but not cleared on reset, eg boot/app comms */
|
||||||
|
.noinit (NOLOAD) : {
|
||||||
|
*(.noinit*)
|
||||||
|
} >ram
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
.data : {
|
||||||
|
_data = .;
|
||||||
|
*(.data*) /* Read-write initialized data */
|
||||||
|
*(.ramtext*) /* "text" functions to run in ram */
|
||||||
|
. = ALIGN(4);
|
||||||
|
_edata = .;
|
||||||
|
} >ram AT >rom
|
||||||
|
_data_loadaddr = LOADADDR(.data);
|
||||||
|
|
||||||
|
.bss : {
|
||||||
|
*(.bss*) /* Read-write zero initialized data */
|
||||||
|
*(COMMON)
|
||||||
|
. = ALIGN(4);
|
||||||
|
_ebss = .;
|
||||||
|
} >ram
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The .eh_frame section appears to be used for C++ exception handling.
|
||||||
|
* You may need to fix this if you're using C++.
|
||||||
|
*/
|
||||||
|
/DISCARD/ : { *(.eh_frame) }
|
||||||
|
|
||||||
|
/* Heap 分配到第二块 RAM */
|
||||||
|
.heap : {
|
||||||
|
_sheap = .;
|
||||||
|
. = ORIGIN(ram2) + LENGTH(ram2);
|
||||||
|
_eheap = .;
|
||||||
|
} >ram2
|
||||||
|
|
||||||
|
/* 第二块 RAM,用于大数组或 heap */
|
||||||
|
/*
|
||||||
|
.ext_ram (NOLOAD) : {
|
||||||
|
_sext_ram = .;
|
||||||
|
*(.ext_ram*)
|
||||||
|
*(.bss_ext_ram*)
|
||||||
|
. = ALIGN(4);
|
||||||
|
_eext_ram = .;
|
||||||
|
} > ram2
|
||||||
|
*/
|
||||||
|
|
||||||
|
. = ALIGN(4);
|
||||||
|
end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram));
|
||||||
|
|
||||||
|
PROVIDE(_sheap = ORIGIN(ram2));
|
||||||
|
PROVIDE(_eheap = ORIGIN(ram2) + LENGTH(ram2));
|
||||||
68
1gpio/makefile
Normal file
68
1gpio/makefile
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# this is the build file for project stm32h7
|
||||||
|
# it is autogenerated by the xmake build system.
|
||||||
|
# do not edit by hand.
|
||||||
|
|
||||||
|
ifneq ($(VERBOSE),1)
|
||||||
|
VV=@
|
||||||
|
endif
|
||||||
|
|
||||||
|
CXX=/usr/bin/g++
|
||||||
|
CU=/usr/bin/clang
|
||||||
|
MM=/usr/bin/gcc
|
||||||
|
GC=/usr/local/go/bin/go
|
||||||
|
AS=/usr/bin/gcc
|
||||||
|
CC=/usr/bin/gcc
|
||||||
|
RC=/home/time/.cargo/bin/rustc
|
||||||
|
MXX=/usr/bin/g++
|
||||||
|
|
||||||
|
LD=/usr/bin/g++
|
||||||
|
RCLD=/home/time/.cargo/bin/rustc
|
||||||
|
GCLD=/usr/local/go/bin/go
|
||||||
|
SH=/usr/bin/g++
|
||||||
|
RCSH=/home/time/.cargo/bin/rustc
|
||||||
|
AR=/usr/bin/ar
|
||||||
|
RCAR=/home/time/.cargo/bin/rustc
|
||||||
|
GCAR=/usr/local/go/bin/go
|
||||||
|
|
||||||
|
gpio_LD=/home/time/doc/mybin/arm-none-eabi/bin/arm-none-eabi-g++
|
||||||
|
gpio_CC=/home/time/doc/mybin/arm-none-eabi/bin/arm-none-eabi-gcc
|
||||||
|
|
||||||
|
gpio_CCFLAGS=-g -O0 -Iuser/inc -I../../libopencm3/include -DSTM32H7 -mthumb -mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard
|
||||||
|
gpio_LDFLAGS=-L../../libopencm3/lib -lopencm3_stm32h7 -lc -lgcc -lnosys -mthumb -mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard -T./cortex-m-generic.ld --static -nostartfiles -Wl,--gc-sections -Wl,-Map=/home/time/doc/codefile/embe/Blog/stm32/stm32h7/1gpio_xmake/bin/gpio.map
|
||||||
|
|
||||||
|
default: gpio
|
||||||
|
|
||||||
|
all: gpio
|
||||||
|
|
||||||
|
.PHONY: default all gpio
|
||||||
|
|
||||||
|
gpio: bin/gpio.elf
|
||||||
|
bin/gpio.elf: build/.objs/gpio/linux/arm32/release/user/src/gpio.c.o build/.objs/gpio/linux/arm32/release/user/src/main.c.o build/.objs/gpio/linux/arm32/release/user/src/systick.c.o
|
||||||
|
@echo linking.release gpio.elf
|
||||||
|
@mkdir -p bin
|
||||||
|
$(VV)$(gpio_LD) -o bin/gpio.elf build/.objs/gpio/linux/arm32/release/user/src/gpio.c.o build/.objs/gpio/linux/arm32/release/user/src/main.c.o build/.objs/gpio/linux/arm32/release/user/src/systick.c.o $(gpio_LDFLAGS)
|
||||||
|
|
||||||
|
build/.objs/gpio/linux/arm32/release/user/src/gpio.c.o: user/src/gpio.c
|
||||||
|
@echo compiling.release user/src/gpio.c
|
||||||
|
@mkdir -p build/.objs/gpio/linux/arm32/release/user/src
|
||||||
|
$(VV)$(gpio_CC) -c $(gpio_CCFLAGS) -o build/.objs/gpio/linux/arm32/release/user/src/gpio.c.o user/src/gpio.c
|
||||||
|
|
||||||
|
build/.objs/gpio/linux/arm32/release/user/src/main.c.o: user/src/main.c
|
||||||
|
@echo compiling.release user/src/main.c
|
||||||
|
@mkdir -p build/.objs/gpio/linux/arm32/release/user/src
|
||||||
|
$(VV)$(gpio_CC) -c $(gpio_CCFLAGS) -o build/.objs/gpio/linux/arm32/release/user/src/main.c.o user/src/main.c
|
||||||
|
|
||||||
|
build/.objs/gpio/linux/arm32/release/user/src/systick.c.o: user/src/systick.c
|
||||||
|
@echo compiling.release user/src/systick.c
|
||||||
|
@mkdir -p build/.objs/gpio/linux/arm32/release/user/src
|
||||||
|
$(VV)$(gpio_CC) -c $(gpio_CCFLAGS) -o build/.objs/gpio/linux/arm32/release/user/src/systick.c.o user/src/systick.c
|
||||||
|
|
||||||
|
clean: clean_gpio
|
||||||
|
|
||||||
|
clean_gpio:
|
||||||
|
@rm -rf bin/gpio.elf
|
||||||
|
@rm -rf bin/gpio.sym
|
||||||
|
@rm -rf build/.objs/gpio/linux/arm32/release/user/src/gpio.c.o
|
||||||
|
@rm -rf build/.objs/gpio/linux/arm32/release/user/src/main.c.o
|
||||||
|
@rm -rf build/.objs/gpio/linux/arm32/release/user/src/systick.c.o
|
||||||
|
|
||||||
8
1gpio/user/inc/gpio.h
Normal file
8
1gpio/user/inc/gpio.h
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#ifndef _GPIO_H
|
||||||
|
#define _GPIO_H
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
void user_gpio_setup(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
17
1gpio/user/inc/main.h
Normal file
17
1gpio/user/inc/main.h
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#ifndef _MAIN_H
|
||||||
|
#define _MAIN_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
// 包含libopencm3内核的相关头文件
|
||||||
|
#include <libopencm3/cm3/systick.h> // 系统滴答定时器相关定义
|
||||||
|
#include <libopencm3/cm3/scb.h> // 系统控制块相关定义
|
||||||
|
|
||||||
|
// 包含STM32 H系列微控制器的相关头文件
|
||||||
|
#include <libopencm3/stm32/rcc.h> // 复位和时钟控制相关定义
|
||||||
|
#include <libopencm3/stm32/pwr.h> // 电源控制相关定义
|
||||||
|
#include <libopencm3/stm32/gpio.h> // 通用输入输出相关定义
|
||||||
|
#include <libopencm3/stm32/flash.h> // 闪存控制相关定义
|
||||||
|
#include <libopencm3/stm32/h7/nvic.h> // 中断向量控制器相关定义
|
||||||
|
|
||||||
|
#endif
|
||||||
11
1gpio/user/inc/systick.h
Normal file
11
1gpio/user/inc/systick.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#ifndef _SYSTICK_H
|
||||||
|
#define _SYSTICK_H
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
extern volatile uint32_t systick;
|
||||||
|
|
||||||
|
void user_delay_ms(uint32_t ms);
|
||||||
|
void systick_init(uint32_t ticks);
|
||||||
|
|
||||||
|
#endif
|
||||||
47
1gpio/user/src/gpio.c
Normal file
47
1gpio/user/src/gpio.c
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
#include "gpio.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 初始化用户GPIO引脚配置
|
||||||
|
*
|
||||||
|
* @details 该函数用于初始化和配置用户所需的GPIO引脚,主要包括以下配置:
|
||||||
|
* 1. 使能GPIOE时钟,配置PE3引脚为推挽输出模式,速度为2MHz,初始状态为低电平
|
||||||
|
* 2. 使能备份区域寄存器访问(通过设置PWR_CR1_DBP位)
|
||||||
|
* 3. 使能GPIOC时钟,配置PC13引脚为输入模式,并启用下拉电阻
|
||||||
|
* 这些配置通常用于设置LED控制引脚和按钮输入引脚等常见外设接口。
|
||||||
|
*
|
||||||
|
* @note 该函数应在系统初始化阶段调用,确保GPIO引脚在使用前已正确配置。
|
||||||
|
* PE3引脚配置为输出模式,可用于驱动LED或其他输出设备。
|
||||||
|
* PC13引脚配置为输入模式并启用下拉电阻,适合连接按钮或开关等输入设备。
|
||||||
|
* PWR_CR1_DBP位的设置允许访问备份寄存器,这在某些应用中可能是必要的。
|
||||||
|
*
|
||||||
|
* @warning 在调用此函数前,应确保系统时钟已经正确配置。
|
||||||
|
* 修改GPIO配置可能会影响连接到这些引脚的外设功能。
|
||||||
|
* 在多任务系统中,如果多个任务访问同一GPIO,可能需要添加同步机制。
|
||||||
|
*
|
||||||
|
* @see rcc_periph_clock_enable(), gpio_mode_setup(), gpio_set_output_options(), gpio_clear()
|
||||||
|
*/
|
||||||
|
void user_gpio_setup(void)
|
||||||
|
{
|
||||||
|
// 使能GPIOE端口的时钟,必须先使能时钟才能配置和使用该端口的引脚
|
||||||
|
rcc_periph_clock_enable(RCC_GPIOE);
|
||||||
|
|
||||||
|
// 配置GPIOE端口的引脚3为输出模式,不使用上拉或下拉电阻
|
||||||
|
gpio_mode_setup(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO3);
|
||||||
|
|
||||||
|
// 设置GPIOE端口引脚3的输出选项:推挽输出类型,速度为2MHz
|
||||||
|
gpio_set_output_options(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_2MHZ, GPIO3);
|
||||||
|
|
||||||
|
// 将GPIOE端口引脚3设置为低电平,也就是灯灭
|
||||||
|
gpio_clear(GPIOE, GPIO3);
|
||||||
|
|
||||||
|
// 使能备份域访问,通过设置电源控制寄存器1的DBP位
|
||||||
|
// 这是访问RTC、备份寄存器等备份域外设的必要步骤
|
||||||
|
// PC13-PC15是备份域的GPIO引脚,需要使能备份域访问才能配置这些引脚
|
||||||
|
PWR_CR1 |= PWR_CR1_DBP;
|
||||||
|
|
||||||
|
// 使能GPIOC端口的时钟,必须先使能时钟才能配置和使用该端口的引脚
|
||||||
|
rcc_periph_clock_enable(RCC_GPIOC);
|
||||||
|
|
||||||
|
// 配置GPIOC端口的引脚13为输入模式,并启用下拉电阻
|
||||||
|
gpio_mode_setup(GPIOC, GPIO_MODE_INPUT, GPIO_PUPD_PULLDOWN, GPIO13);
|
||||||
|
}
|
||||||
174
1gpio/user/src/main.c
Normal file
174
1gpio/user/src/main.c
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
#include "main.h"
|
||||||
|
#include "gpio.h"
|
||||||
|
#include "systick.h"
|
||||||
|
|
||||||
|
static void system_clock_setup(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 主函数,程序入口点
|
||||||
|
*
|
||||||
|
* @details 该函数是程序的入口点,负责系统的初始化和主循环。主要执行以下步骤:
|
||||||
|
* 1. 设置中断优先级分组为16个优先级,无子优先级
|
||||||
|
* 2. 初始化系统时钟配置
|
||||||
|
* 3. 初始化SysTick定时器,设置为每毫秒产生一次中断
|
||||||
|
* 4. 初始化用户GPIO引脚配置
|
||||||
|
* 5. 进入主循环,检测按钮状态并控制LED
|
||||||
|
* 主循环中检测PC13引脚(按钮)的状态,当检测到按钮按下时,
|
||||||
|
* 进行消抖处理,然后切换PE3引脚(LED)的状态,并等待按钮释放。
|
||||||
|
*
|
||||||
|
* @note 该函数不会返回,除非发生严重错误。
|
||||||
|
* 主循环中的按钮检测包含了简单的消抖处理,通过延时和再次检测实现。
|
||||||
|
* 程序使用了轮询方式检测按钮状态,适用于简单的嵌入式应用。
|
||||||
|
*
|
||||||
|
* @warning 在修改此函数时,应确保系统初始化顺序正确,特别是时钟配置。
|
||||||
|
* 按钮消抖延时时间(20ms)可能需要根据实际硬件特性进行调整。
|
||||||
|
* 如果使用RTOS,此函数结构需要重新设计以适应任务调度。
|
||||||
|
*
|
||||||
|
* @see scb_set_priority_grouping(), system_clock_setup(), systick_init(),
|
||||||
|
* user_gpio_setup(), user_delay_ms(), gpio_get(), gpio_toggle()
|
||||||
|
*/
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
// 设置中断优先级分组为16个主优先级,无子优先级
|
||||||
|
// 这意味着每个中断都有独立的优先级,没有子优先级用于同一优先级中断的排序
|
||||||
|
scb_set_priority_grouping(SCB_AIRCR_PRIGROUP_GROUP16_NOSUB);
|
||||||
|
|
||||||
|
// 初始化系统时钟配置
|
||||||
|
system_clock_setup();
|
||||||
|
|
||||||
|
// 初始化SysTick定时器,参数1000U表示每秒产生1000次中断,即每1ms一次
|
||||||
|
systick_init(1000U);
|
||||||
|
|
||||||
|
// 初始化用户GPIO引脚配置
|
||||||
|
// 根据gpio的代码,这包括配置PE3为输出(LED)和PC13为输入(按钮)
|
||||||
|
user_gpio_setup();
|
||||||
|
|
||||||
|
// 主循环,程序将在此无限循环
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
// 检测PC13引脚(按钮)的状态,如果为高电平(按钮按下)则执行以下代码
|
||||||
|
if(gpio_get(GPIOC, GPIO13))
|
||||||
|
{
|
||||||
|
// 延时20ms,用于按钮消抖
|
||||||
|
// 按钮在按下和释放时会产生机械抖动,延时可以避免误检测
|
||||||
|
user_delay_ms(20);
|
||||||
|
|
||||||
|
// 再次检测按钮状态,确认按钮确实被按下(不是抖动)
|
||||||
|
if(gpio_get(GPIOC, GPIO13))
|
||||||
|
{
|
||||||
|
// 切换PE3引脚(LED)的状态
|
||||||
|
// 如果LED当前是亮的状态,则熄灭;如果是灭的状态,则点亮
|
||||||
|
gpio_toggle(GPIOE, GPIO3);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 等待按钮释放
|
||||||
|
// 这是一个空循环,一直检测直到按钮被释放(PC13变为低电平)
|
||||||
|
// 这样可以防止在按钮按住期间多次触发LED切换
|
||||||
|
while(gpio_get(GPIOC, GPIO13));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 理论上不会执行到这里,因为上面是无限循环
|
||||||
|
// 这行代码主要是为了满足C语言标准中main函数应有返回值的要求
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 系统时钟配置函数
|
||||||
|
*
|
||||||
|
* @details 该函数用于初始化和配置系统的时钟树,包括PLL锁相环、系统时钟分频、Flash等待状态
|
||||||
|
* 和电源管理设置。函数执行以下主要步骤:
|
||||||
|
* 1. 初始化GPIOH和SYSCFG时钟,配置GPIOH1引脚为输出模式
|
||||||
|
* 2. 设置PLL配置结构体的各个参数,包括时钟源选择、PLL分频系数等
|
||||||
|
* 3. 配置系统时钟分频参数,确定各个总线的时钟频率
|
||||||
|
* 4. 设置Flash等待状态,确保Flash访问速度与系统时钟频率匹配
|
||||||
|
* 5. 配置电压缩放比例和电源模式
|
||||||
|
* 6. 应用PLL配置,完成系统时钟设置
|
||||||
|
* 这些配置参数与STM32CubeMX工具生成的配置可以一一对应,便于调试和验证。
|
||||||
|
*
|
||||||
|
* @note 该函数应在系统启动初期调用,确保系统时钟正确配置后再进行其他初始化。
|
||||||
|
* 函数中配置的GPIOH1引脚可能用于指示时钟配置状态或调试目的。
|
||||||
|
* PLL配置基于25MHz的外部高速晶振(HSE),通过PLL1产生系统时钟。
|
||||||
|
* PLL2和PLL3可用于为特定外设提供时钟。
|
||||||
|
* 系统时钟配置完成后,CPU将运行在较高频率(约480MHz),具体取决于PLL1配置。
|
||||||
|
*
|
||||||
|
* @warning 修改此函数中的时钟配置参数时,应确保不超过芯片的最大工作频率限制。
|
||||||
|
* 不正确的时钟配置可能导致系统不稳定或无法正常工作。
|
||||||
|
* 修改时钟配置可能会影响依赖于精确时序的外设(如UART、SPI等)。
|
||||||
|
* 在多任务系统中,修改系统时钟可能需要重新调整定时器和调度器的配置。
|
||||||
|
*
|
||||||
|
* @see rcc_periph_clock_enable(), gpio_mode_setup(), gpio_set_output_options(),
|
||||||
|
* gpio_set(), rcc_clock_setup_pll()
|
||||||
|
*/
|
||||||
|
static void system_clock_setup(void)
|
||||||
|
{
|
||||||
|
// 初始化PLL配置结构体,所有成员清零
|
||||||
|
struct rcc_pll_config pll_config = {0};
|
||||||
|
|
||||||
|
// 使能GPIOH端口时钟,用于配置GPIOH1引脚
|
||||||
|
// OSC_IN是GPIOH0,OSC_OUT是GPIOH1
|
||||||
|
rcc_periph_clock_enable(RCC_GPIOH);
|
||||||
|
// 使能SYSCFG时钟,用于系统配置
|
||||||
|
rcc_periph_clock_enable(RCC_SYSCFG);
|
||||||
|
|
||||||
|
// 配置GPIOH1引脚为输出模式,启用上拉电阻
|
||||||
|
gpio_mode_setup(GPIOH, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, GPIO1);
|
||||||
|
// 设置GPIOH1引脚为推挽输出,速度为50MHz
|
||||||
|
gpio_set_output_options(GPIOH, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO1);
|
||||||
|
|
||||||
|
// 短暂延时,确保GPIO配置稳定
|
||||||
|
for (unsigned i = 0; i < 20; i++)
|
||||||
|
{
|
||||||
|
__asm__("nop"); // 空操作指令,用于延时
|
||||||
|
}
|
||||||
|
// 将GPIOH1引脚设置为高电平
|
||||||
|
gpio_set(GPIOH, GPIO1);
|
||||||
|
|
||||||
|
// 设置系统时钟源为PLL
|
||||||
|
pll_config.sysclock_source = RCC_PLL;
|
||||||
|
// 设置PLL时钟源为外部高速晶振(HSE)
|
||||||
|
pll_config.pll_source = RCC_PLLCKSELR_PLLSRC_HSE;
|
||||||
|
// 设置HSE频率为25MHz
|
||||||
|
pll_config.hse_frequency = 25000000U;
|
||||||
|
|
||||||
|
// 配置PLL1参数,这一部分可以和CubeMX进行一一对应
|
||||||
|
// 系统时钟频率 = HSE / M * N / P = 25MHz / 5 * 192 / 2 = 480MHz
|
||||||
|
pll_config.pll1.divm = 5;
|
||||||
|
pll_config.pll1.divn = 192;
|
||||||
|
pll_config.pll1.divp = 2;
|
||||||
|
pll_config.pll1.divq = 2;
|
||||||
|
pll_config.pll1.divr = 2;
|
||||||
|
|
||||||
|
// 配置PLL2参数
|
||||||
|
pll_config.pll2.divm = 32;
|
||||||
|
pll_config.pll2.divn = 129;
|
||||||
|
pll_config.pll2.divp = 2;
|
||||||
|
pll_config.pll2.divq = 2;
|
||||||
|
pll_config.pll2.divr = 2;
|
||||||
|
|
||||||
|
// 配置PLL3参数
|
||||||
|
pll_config.pll3.divm = 32;
|
||||||
|
pll_config.pll3.divn = 129;
|
||||||
|
pll_config.pll3.divp = 2;
|
||||||
|
pll_config.pll3.divq = 2;
|
||||||
|
pll_config.pll3.divr = 2;
|
||||||
|
|
||||||
|
// 配置系统时钟分频参数,还是可以和CubeMX进行一一对应
|
||||||
|
pll_config.core_pre = RCC_D1CFGR_D1CPRE_BYP; // CPU核心时钟不分频
|
||||||
|
pll_config.hpre = RCC_D1CFGR_D1HPRE_DIV2; // AHB总线时钟2分频
|
||||||
|
pll_config.ppre1 = RCC_D2CFGR_D2PPRE_DIV2; // APB1总线时钟2分频
|
||||||
|
pll_config.ppre2 = RCC_D2CFGR_D2PPRE_DIV2; // APB2总线时钟2分频
|
||||||
|
pll_config.ppre3 = RCC_D1CFGR_D1PPRE_DIV2; // APB3总线时钟2分频
|
||||||
|
pll_config.ppre4 = RCC_D3CFGR_D3PPRE_DIV2; // APB4总线时钟2分频
|
||||||
|
|
||||||
|
// 设置Flash等待状态为4个周期,确保在480MHz系统时钟下能正确访问Flash
|
||||||
|
pll_config.flash_waitstates = FLASH_ACR_LATENCY_4WS;
|
||||||
|
|
||||||
|
// 配置电压缩放和电源模式
|
||||||
|
pll_config.voltage_scale = PWR_VOS_SCALE_0; // 电压缩放级别0,最高性能模式
|
||||||
|
pll_config.power_mode = PWR_SYS_LDO; // 使用LDO(低压差线性稳压器)电源模式
|
||||||
|
pll_config.smps_level = 0; // SMPS(开关模式电源)级别
|
||||||
|
|
||||||
|
// 应用PLL配置,完成系统时钟设置
|
||||||
|
rcc_clock_setup_pll(&pll_config);
|
||||||
|
}
|
||||||
145
1gpio/user/src/systick.c
Normal file
145
1gpio/user/src/systick.c
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
#include "systick.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 系统毫秒计数器
|
||||||
|
*
|
||||||
|
* @details 这是一个全局变量,用于记录系统运行的毫秒数。
|
||||||
|
* 该变量在SysTick定时器中断服务程序(sys_tick_handler)中递增,
|
||||||
|
* 通常用于实现系统计时和延时功能(如user_delay_ms函数)。
|
||||||
|
* 变量被声明为volatile,确保编译器不会优化掉对它的访问,
|
||||||
|
* 因为它可以在中断上下文中被修改,而主程序可能需要读取它的值。
|
||||||
|
*
|
||||||
|
* @note 该变量的初始值为0,表示系统启动后经过的毫秒数。
|
||||||
|
* 变量的递增频率取决于SysTick定时器的配置,通常为每毫秒递增一次。
|
||||||
|
* 在32位系统上,该变量约每49.7天会溢出一次(从2^32-1回到0)。
|
||||||
|
*
|
||||||
|
* @warning 在多任务或多线程环境中访问此变量时,可能需要添加适当的同步机制,
|
||||||
|
* 如禁用中断或使用原子操作,以避免竞态条件。
|
||||||
|
* 不应直接修改此变量的值,除非有特殊需求并了解其影响。
|
||||||
|
*
|
||||||
|
* @see sys_tick_handler(), user_delay_ms(), systick_init()
|
||||||
|
*/
|
||||||
|
volatile uint32_t systick = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 执行WFI(Wait For Interrupt)指令,使处理器进入低功耗状态
|
||||||
|
*
|
||||||
|
* @details 该函数使用内联汇编执行ARM Cortex-M处理器的WFI指令。
|
||||||
|
* WFI指令会使处理器进入低功耗状态,直到下一个中断发生时才会唤醒处理器。
|
||||||
|
* 该函数被声明为静态内联(always_inline),确保总是被内联展开以减少函数调用开销。
|
||||||
|
* 使用volatile关键字防止编译器优化掉看似"无用"的指令。
|
||||||
|
*
|
||||||
|
* @note 该函数不会改变处理器状态,只是暂停执行直到中断发生。
|
||||||
|
* 在中断发生时,处理器会恢复执行WFI指令之后的代码。
|
||||||
|
* 该函数通常用于在等待事件或延时期间降低系统功耗。
|
||||||
|
*
|
||||||
|
* @warning 使用该函数时,确保系统中存在能够唤醒处理器的中断源,
|
||||||
|
* 否则处理器可能会一直保持低功耗状态。
|
||||||
|
*/
|
||||||
|
static inline __attribute__((always_inline)) void __WFI(void)
|
||||||
|
{
|
||||||
|
__asm volatile("wfi");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 实现毫秒级延时的函数
|
||||||
|
*
|
||||||
|
* @details 该函数使用SysTick定时器实现精确的毫秒级延时。函数记录当前的SysTick值作为起始时间,
|
||||||
|
* 然后进入循环等待,直到经过的时间达到指定的毫秒数。在等待期间,CPU会通过WFI指令
|
||||||
|
* 进入低功耗状态,以降低系统功耗。该函数适用于裸机系统中的简单延时需求。
|
||||||
|
*
|
||||||
|
* @param ms 要延时的毫秒数,取值范围为1到(2^32-1)毫秒。
|
||||||
|
*
|
||||||
|
* @note 该函数是阻塞式的,在延时期间CPU无法执行其他任务。
|
||||||
|
* 函数依赖于全局变量systick的正确更新,通常systick在SysTick中断服务程序中递增。
|
||||||
|
* SysTick定时器应配置为每毫秒产生一次中断。
|
||||||
|
* 函数内部使用了WFI指令降低功耗,但实际延时的精度取决于中断的频率和响应时间。
|
||||||
|
*
|
||||||
|
* @warning 如果系统中没有中断或中断被禁用,使用此函数可能导致系统死锁。
|
||||||
|
* 在实时性要求高的系统中,应谨慎使用阻塞式延时函数。
|
||||||
|
* 最大延时时间受限于32位无符号整数的最大值(约49.7天)。
|
||||||
|
*
|
||||||
|
* @see systick, __WFI()
|
||||||
|
*/
|
||||||
|
void user_delay_ms(uint32_t ms)
|
||||||
|
{
|
||||||
|
// 记录开始延时的时刻(systick的当前值)
|
||||||
|
uint32_t start = systick;
|
||||||
|
|
||||||
|
// 循环等待,直到经过的时间达到指定的毫秒数
|
||||||
|
while (systick - start < ms)
|
||||||
|
{
|
||||||
|
// 进入低功耗模式,等待中断唤醒,有助于在延时时降低CPU功耗
|
||||||
|
__WFI();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 初始化SysTick定时器
|
||||||
|
*
|
||||||
|
* @details 该函数用于初始化和配置ARM Cortex-M的SysTick定时器,使其能够以指定的频率产生中断。
|
||||||
|
* 函数执行以下配置步骤:
|
||||||
|
* 1. 设置SysTick时钟源为AHB总线时钟
|
||||||
|
* 2. 根据指定的中断频率计算并设置重载值
|
||||||
|
* 3. 清除当前计数值
|
||||||
|
* 4. 设置中断优先级
|
||||||
|
* 5. 使能中断和计数器
|
||||||
|
* 配置完成后,SysTick定时器将开始工作,并在每次计数到0时产生中断。
|
||||||
|
*
|
||||||
|
* @param ticks 指定SysTick定时器的中断频率,单位为Hz(每秒中断次数)
|
||||||
|
* 例如,传入1000表示定时器每1秒产生1000次中断,即每1毫秒产生一次中断。
|
||||||
|
*
|
||||||
|
* @note 该函数依赖于rcc_get_bus_clk_freq()函数获取CPU时钟频率。
|
||||||
|
* SysTick中断优先级被设置为15(最低优先级),在需要更高实时性的应用中可能需要调整。
|
||||||
|
* 函数使用了库函数封装的方式操作SysTick寄存器,而不是直接寄存器访问。
|
||||||
|
* 重载值的计算方式为:(CPU时钟频率 / ticks) - 1,确保ticks值不能导致计算结果超过24位最大值(16,777,215)。
|
||||||
|
*
|
||||||
|
* @warning 如果ticks参数过大,可能导致重载值小于1,此时定时器可能无法正常工作。
|
||||||
|
* 在调用此函数前,应确保CPU时钟已经正确配置。
|
||||||
|
* 此函数会覆盖任何之前的SysTick配置,包括中断处理函数的注册。
|
||||||
|
*
|
||||||
|
* @see sys_tick_handler(), systick, user_delay_ms()
|
||||||
|
*/
|
||||||
|
void systick_init(uint32_t ticks)
|
||||||
|
{
|
||||||
|
// 设置SysTick时钟源为AHB总线时钟
|
||||||
|
systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);
|
||||||
|
|
||||||
|
// 计算重载值:总线频率除以定时器周期数减1
|
||||||
|
systick_set_reload((rcc_get_bus_clk_freq(RCC_CPUCLK) / ticks) - 1UL);
|
||||||
|
|
||||||
|
// 清除SysTick当前值寄存器(被注释掉的代码)
|
||||||
|
//STK_CVR = 0UL;
|
||||||
|
// 使用函数方式清除SysTick计数器
|
||||||
|
systick_clear();
|
||||||
|
|
||||||
|
// 设置SysTick中断优先级为15(最低优先级)
|
||||||
|
nvic_set_priority(NVIC_SYSTICK_IRQ, 15);
|
||||||
|
|
||||||
|
// 使用函数方式配置SysTick控制寄存器(被注释掉的代码)
|
||||||
|
// STK_CSR = STK_CSR_CLKSOURCE | STK_CSR_TICKINT | STK_CSR_ENABLE;
|
||||||
|
// 分别使能SysTick中断和计数器
|
||||||
|
systick_interrupt_enable();
|
||||||
|
systick_counter_enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief SysTick定时器中断服务函数
|
||||||
|
*
|
||||||
|
* @details 该函数是SysTick定时器的中断服务程序(ISR),每当SysTick定时器计数到0时触发。
|
||||||
|
* 函数的主要功能是递增全局变量systick,该变量通常用于系统计时和延时功能。
|
||||||
|
*
|
||||||
|
* @note 该函数应保持简短高效,因为它是中断服务程序,执行时间过长可能影响系统实时性。
|
||||||
|
* systick变量通常定义为全局变量,用于记录系统运行的毫秒数(假设SysTick配置为1ms中断一次)。
|
||||||
|
* 在多任务系统中,此函数可能需要添加任务切换相关的代码。
|
||||||
|
*
|
||||||
|
* @warning 此函数不应被用户代码直接调用,它是由硬件自动调用的中断服务程序。
|
||||||
|
* 在函数内部应避免调用可能导致长时间阻塞的函数或复杂的计算。
|
||||||
|
* 如果systick变量在多线程/多任务环境中被访问,可能需要添加适当的同步机制。
|
||||||
|
*
|
||||||
|
* @see systick, systick_init(), user_delay_ms()
|
||||||
|
*/
|
||||||
|
void sys_tick_handler(void)
|
||||||
|
{
|
||||||
|
systick++;
|
||||||
|
}
|
||||||
101
1gpio/xmake.lua
Normal file
101
1gpio/xmake.lua
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
-- 工程名
|
||||||
|
set_project("stm32h7")
|
||||||
|
|
||||||
|
-- 定义工具链
|
||||||
|
toolchain("arm-none-eabi")
|
||||||
|
set_kind("standalone")
|
||||||
|
set_sdkdir("/home/time/doc/mybin/arm-none-eabi")
|
||||||
|
toolchain_end()
|
||||||
|
|
||||||
|
-- 使用自定义的 arm-none-eabi 工具链
|
||||||
|
set_toolchains("arm-none-eabi")
|
||||||
|
|
||||||
|
-- 设置平台与架构
|
||||||
|
set_plat("linux")
|
||||||
|
set_arch("arm32")
|
||||||
|
|
||||||
|
-- 编译优化与调试
|
||||||
|
set_optimize("none")
|
||||||
|
set_symbols("debug")
|
||||||
|
|
||||||
|
-- 目标程序
|
||||||
|
target("gpio")
|
||||||
|
-- 设置目标类型,编译为可执行文件
|
||||||
|
set_kind("binary")
|
||||||
|
-- 添加源文件
|
||||||
|
add_files("user/src/*.c")
|
||||||
|
-- 设置头文件路径
|
||||||
|
add_includedirs("user/inc", {public = true})
|
||||||
|
-- 设置输出目录
|
||||||
|
set_targetdir("$(projectdir)/bin")
|
||||||
|
|
||||||
|
-- 让 elf 文件名跟随 target 名
|
||||||
|
on_load(function (target)
|
||||||
|
target:set("filename", target:name() .. ".elf")
|
||||||
|
-- 同时设置 map 文件输出到 bin
|
||||||
|
target:add("ldflags",
|
||||||
|
"-Wl,-Map=" .. path.join(target:targetdir(), target:name() .. ".map"),
|
||||||
|
{force = true}
|
||||||
|
)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- 架构 & FPU
|
||||||
|
add_cxflags("-mthumb", "-mcpu=cortex-m7", "-mfpu=fpv5-d16", "-mfloat-abi=hard", {force = true})
|
||||||
|
add_asflags("-mthumb", "-mcpu=cortex-m7", "-mfpu=fpv5-d16", "-mfloat-abi=hard", {force = true})
|
||||||
|
add_ldflags("-mthumb", "-mcpu=cortex-m7", "-mfpu=fpv5-d16", "-mfloat-abi=hard", {force = true})
|
||||||
|
|
||||||
|
-- 头文件路径 (libopencm3)
|
||||||
|
add_includedirs("../../libopencm3/include", {public = true})
|
||||||
|
|
||||||
|
-- 链接 libopencm3
|
||||||
|
add_linkdirs("../../libopencm3/lib")
|
||||||
|
add_links("opencm3_stm32h7")
|
||||||
|
|
||||||
|
-- 额外链接选项
|
||||||
|
add_ldflags("-T./cortex-m-generic.ld", "--static", "-nostartfiles", "-Wl,--gc-sections", {force = true})
|
||||||
|
add_syslinks("c", "gcc", "nosys")
|
||||||
|
|
||||||
|
-- 预处理宏
|
||||||
|
add_defines("STM32H7")
|
||||||
|
|
||||||
|
-- 生成额外的二进制文件
|
||||||
|
after_build(function (target)
|
||||||
|
local elf = target:targetfile()
|
||||||
|
local bindir = target:targetdir()
|
||||||
|
local name = target:name()
|
||||||
|
os.execv("arm-none-eabi-objcopy", {"-Obinary", elf, path.join(bindir, name .. ".bin")})
|
||||||
|
os.execv("arm-none-eabi-objcopy", {"-Oihex", elf, path.join(bindir, name .. ".hex")})
|
||||||
|
os.execv("arm-none-eabi-objcopy", {"-Osrec", elf, path.join(bindir, name .. ".srec")})
|
||||||
|
os.execv("arm-none-eabi-objdump", {"-S", elf}, {stdout = path.join(bindir, name .. ".list")})
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- 自定义清理逻辑
|
||||||
|
on_clean(function (target)
|
||||||
|
os.rm("build")
|
||||||
|
os.rm("bin")
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- 定义 flash 任务(使用 openocd)
|
||||||
|
task("flash")
|
||||||
|
set_menu {
|
||||||
|
usage = "xmake flash [options]",
|
||||||
|
description = "Flash firmware to STM32H7 using OpenOCD.",
|
||||||
|
options = {
|
||||||
|
{'t', "target", "kv", nil, "Set the target name"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
on_run(function (args)
|
||||||
|
import("core.project.project")
|
||||||
|
|
||||||
|
local tname = args.target or (project.targets()[1] and project.targets()[1]:name())
|
||||||
|
assert(tname, "No target found!")
|
||||||
|
local t = project.target(tname)
|
||||||
|
assert(t, "Target " .. tname .. " not found!")
|
||||||
|
|
||||||
|
local elf = t:targetfile()
|
||||||
|
os.execv("openocd", {
|
||||||
|
"-f", "interface/stlink.cfg",
|
||||||
|
"-f", "target/stm32h7x.cfg",
|
||||||
|
"-c", "program " .. elf .. " verify reset exit"
|
||||||
|
})
|
||||||
|
end)
|
||||||
Reference in New Issue
Block a user