|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、AT32F403ZGT6介绍- 效能/性能
4 q; y' D5 n' \7 w+ M$ k- ARM® Cortex®-M4主频最
. f' G& u1 Q' @9 ?9 }( D( I高200MHz - 单精度浮点运算单元
- 內存执行零等待技术
- 2.6V ~ 3.6V 供电电压
- I/Os 可承受 5V 电平
- 温度范围-40 ~ +85°C
& h/ f6 J5 N& }5 Q$ i3 w
% a; p& p$ b% ^6 z
- 內存; a+ f3 i, q% p X/ s
- 高达1MB闪存
- 高达224KB SRAM
/ t* E0 h5 e( t: `$ ]* u" m2 r$ x( A# ?0 I, [
- 时钟
' Y2 A# C* }/ S3 `* ]- PLL (200 MHz输出)
- 外部高速 4 ~ 16 MHz晶体振荡器
- 内部高速 8MHz RC振荡器(-40°C ~ 85°C)
- 外部低速 32.768kHz RTC 晶体振荡器
- 内部低速 40kHz RC振荡器
1 l8 _4 r% E. d/ a( [2 P1 d6 \* ]2 j* E4 f' z. }1 Z2 K
- 复位和电源管理
- 上电/断电复位(POR/PDR)
- 可编程电压监测器(PVD)) ?" c, H. q5 i( X9 w6 @/ L
% G! j# W( u7 Z" h
- 仿真高性能外设0 O+ Y8 h( t: t6 B3 f; d
- 3组2M采样速率12位A/D转换器(21通道)
- 2通道12位D/A转换器' ^1 | a( U: W0 S6 }
; s' A3 q$ g! M: Z 6 `+ G& c0 R- S5 }- A. D- D
4 E0 P9 A' `2 l* h) r3 S- 定时器
; \1 y. ~$ F; L6 \/ _9 o. b$ Y! C9 E- 3个16位带死区控制PWM高级控制定时器
- 2个32位, 8个16位通用定时器
- 2个看门狗定时器(独立和窗口型)
- 2个16位基本定时器(驱动DAC)
- 1个系统时间定时器: 24位自减型
9 ~; m4 K+ x9 m% `& H$ T" h
/ G9 B& S8 `& i. E$ p* |9 v
- 外设接口6 s4 \. @ y$ E, f/ y- o
- 3 x I2C
- 4 x SPI / I2S (SPI可达50MHz)
- 3 x USART + 2 x UART
- 2 x SDIO
- USB 2.0 全速接口
- CAN 2.0B
" n) W6 Y/ @# V1 [7 i) T
. j3 r, Z$ ^8 f* b9 [( |
- DMA
3 m k$ B; f# W+ ]! P' i- 12通道, 支持定时器、ADC、DAC、SDIO、I2S、SPI、I2C和USART, \/ @" y7 V# L2 t$ D
7 |' o; n- ]$ p% I
- XMC
0 R# i& k" t. u2 C1 _9 F, {6 U- 支持CF卡、SRAM、PSRAM、NOR和NAND存储器
- 支持并行LCD接口, 兼容8080/6800模式2 P# ?4 f. Z* G, W: |8 v* |
# j, q/ Q2 W( B, x
- SPIM
6 d% s6 z9 h" B: g- 外部 SPI Flash memory 扩展(程序执行/数据储存/程序与数据可加密)
2 p; U- J, O: c9 f+ D/ L+ l; L* V
- 封装4 V( \4 x& K* J q
- 48/64/100/144-pin LQFP
- 48-pin QFN2 P( K, M, l, K; _9 F$ V6 ^$ O+ @
6 \$ s) g' B1 e' C1 |6 k % o ^4 L% M. P5 U
/ I7 N' S% i' [3 D5 y( f
( ~4 B% H s$ \: B
/ q( Q) S* x+ i" a5 b
( f* [8 a- V7 B; i( h' p: m% s8 n
) s9 b1 f' |3 d4 n5 T0 l! ]
* k- j& g$ X% u/ l8 q
7 G7 P9 J, H6 |& L3 @% b
' q) _. [% a7 A
$ T I$ ~ g1 a7 F
4 B1 N, o5 g4 k# Y7 b& w- N: t& f' u. e9 A4 x, K. _
^& w# J: v" a3 c2 l2 D7 L
7 N& T' U3 {+ [0 n) d
4 i- G' N. `& L8 _/ q1 `" X
! v: X. ~# W [' i) |( j( I
$ n# G; N9 U9 V1 H1 w, d) V, J' a( y) h- R
- L9 K: T8 U s2 ]3 q/ G; x7 b4 K0 I' `4 K' S1 m
_' X# D) s. V; l; ^+ p7 D" \" l& a# J0 Z7 n
8 |3 T$ E% {- G2 L: p, J; X) t& f& M2 A, `! _5 T# f
+ }% q( M" i: O d; F( t. u+ \
/ G4 j1 H+ Y( d% p
& q1 S! R2 \9 Q x! a
6 ?0 { K1 g3 c4 v* v% `* h2 k ~$ W/ s4 }! f6 N
# N. O/ |5 x! r1 A
$ T3 T% J, |9 _9 d7 G6 L+ o7 A( u0 P0 a4 V
' B5 Y6 L. n: q3 h& o/ A2 E
: G' t& z4 `3 O" i. Z' y' z9 e3 q$ z
. d- S3 }. r3 d
0 s; R2 W, `: c6 u* F" @# `- f8 X8 j. l+ ]# X8 ]) |: q
. R- F! G; G* o$ A; q, v- c
. h# x& e4 E. q* Q' s6 |. O. [2 k/ O# ?" a% A( b& K) r+ Z
& ^$ @% I( L+ o
" P3 b6 w, ~1 P/ Y2 O
& H, z4 h5 u1 o* ]4 u. j) G8 R J$ R( O- r
0 u, R; q; K+ y' z0 ^
- D6 K! @7 W8 p+ s+ o( ^, @& b* g
/ e( q# v* G2 ~/ [0 s( P2 w, I) u, t' w+ j" D# }
7 Y" `3 t9 V3 Q+ q
8 d5 u9 [# @+ h! ^二、点亮LED灯4 r/ y2 }% s. O7 K
9 n7 J: ]& e/ Z点亮LED并结合系统滴答时钟进行精确延时
% [* b, r% P) g( I* s; G- #include "systick.h"
$ r1 ?( S" B& g. {+ v - 9 G) D; W. B- M9 X
# s4 K1 h$ V6 H9 U% e- static u8 fac_us;
/ w3 e$ I) C6 u! L8 t+ x - static u16 fac_ms;
3 h `3 h$ H1 V% F4 e) h
; s% B8 ^* E: p) E; F- M- void systick_init(u8 sys_clock)9 r. o% a7 W7 h" @# W
- {$ c: H( l$ c% |0 Q' U
- SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);( Q# w2 S. N" q) ?1 {* W8 k
-
1 t0 k) h$ N4 B7 w, e( C2 m6 k - fac_us=sys_clock;- ^4 u3 t+ F5 \( r7 e1 l& ~
- fac_ms=(u16)fac_us*1000;
' X. w/ v# y% r3 F - }
4 J4 V& b/ t6 k+ b0 [ - ( {- r/ T8 O# j2 M8 C3 S- [! o% Z* g
- //'nus'<=83886# b3 D& q0 }5 j
- void delay_us(u32 nus)6 A& p1 `8 i; n4 V, u- e
- {
# S4 x/ N. T8 ^, z" K, i - u32 temp;; k5 I! i: T0 e! Y+ n, K) G5 u7 ~1 k
- 0 j2 E5 Q& L# x: i6 j2 c
- SysTick->VAL=0;
6 n* d( s) ~ Y - SysTick->LOAD=nus*fac_us;
$ U3 ~( b+ v- o - SysTick->CTRL|=0x01;
! S6 Q! a3 F s4 ^3 z - ! @9 s$ L4 ~' W( J. w; Z- ^) O
- do& b$ A7 C( V- {: }* ~( A' e
- {3 Q/ Q) z+ a+ F l, ]
- temp=SysTick->CTRL;
7 k" F3 r0 ?' F" H4 H+ D5 k - }while((temp&0x01)&&!(temp&(1<<16)));3 o0 V7 z3 @5 X; T, [# d8 {
- SysTick->CTRL&=~0x01;8 t4 j" [0 o+ P6 s( i; V
- SysTick->VAL=0;
6 u! j$ a4 q% z* n, y8 c - }: u0 y1 H$ `# f1 L
d n3 n4 B8 U; B- //'nus'<=83
9 j) W, q0 I U: A6 w - static void delay_nms(u8 nms). L$ V" O7 B- i: p
- {
0 D2 I2 n! B" l - u32 temp;7 Y9 @1 g! T9 `- u& l
-
; F1 X0 i- s+ `' A - SysTick->VAL=0;
; M$ x5 l% _4 S; {$ A/ i - SysTick->LOAD=nms*fac_ms;$ H( Y8 s5 f7 U/ E- \
- SysTick->CTRL|=0x01;
* Q" M$ j9 ^8 @' L4 T% x -
8 k" Q% j* }3 \; r& U$ x7 i0 z - do/ _& f2 x2 ^# M7 i# H
- {) A& b) E6 f6 r. A' k
- temp=SysTick->CTRL;
/ H5 e2 p* {+ h/ b* q- U% Q; x - }while((temp&0x01)&&!(temp&(1<<16)));
- ^$ {' l' U6 Y: P9 c+ K* Q - SysTick->CTRL&=~0x01;, a$ x% Y4 {) O; f( h4 o
- SysTick->VAL=0;7 l+ [" _/ H5 b# L: k2 p
- }2 k- G$ c( F8 n9 e9 s0 l* z
- 4 M$ b# X3 J, c) c' ?, |. g
- & B; @7 K; O) A, q: P+ `8 E: N
- void delay_ms(u32 nms)" X$ `1 O9 w# w; ?- ?# q
- {* o: F. m) U. @8 ?0 q
- u8 yushu=nms%50;
' x3 s" W4 P& m' K U. y! h/ ` - u32 zhengshu=nms/50;$ n* N5 A& n) Y: I% B, k6 [8 ~
- # O8 D; d: v1 F% }: d
- while(zhengshu)
. ?4 }( T0 `. E, p' e/ R* v# S$ r$ D8 k - {6 B2 S% S5 d. q- H; n
- delay_nms(50);
$ s4 r/ S2 {, Q5 }6 b( j - zhengshu --;
% v0 q/ C' Y# [/ g6 z - }) ~8 |! Q8 f' [4 T
- if(yushu), L7 r+ D/ B7 f- J- q+ K+ W) H! |
- {% l7 s) Y' G' k6 r1 K7 |% \1 |
- delay_nms(yushu);
7 G2 z. h* j' m7 m, D- J - }' Z' u9 F' p4 R/ [" C
- }/ |+ b+ s) d' c) _! Q. g
- 5 G" i& S% E% n; E1 y6 u V4 M
( O( l9 R3 H$ |& A3 l2 t$ t$ ?# W7 X. J! M- T+ t+ C$ {
- D8 S. u/ G& F+ G$ X9 V' f3 N# P- #include "led.h"4 z o& P6 l5 K
- 4 T. c" J% u4 }0 }2 L2 V
6 r; |0 w/ E2 ]( E) P- void led_config(void)% D5 Z4 e# r8 F7 j, R" S+ }
- {
8 I" ~! O( X. f - GPIO_InitType GPIO_Initstructure;
* ~$ U7 j8 D' }; a6 e, D - ) A8 H7 _* E7 L" A
- RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOD,ENABLE);
. b2 w& s: Y; z) k -
7 E( z- g' _ j. {5 |- [ - GPIO_Initstructure.GPIO_MaxSpeed=GPIO_MaxSpeed_50MHz;4 }# e0 g4 l; w' S
- GPIO_Initstructure.GPIO_Mode=GPIO_Mode_OUT_PP;4 A0 a5 R4 h2 K( N$ X& W7 G- P2 }# D
- GPIO_Initstructure.GPIO_Pins=GPIO_Pins_13|GPIO_Pins_14|GPIO_Pins_15;
& k# [) [4 A A2 f# \+ T h: X1 m - 0 P" g- C( ] H/ [ T) m" j
- GPIO_Init(GPIOD,&GPIO_Initstructure);4 _% B( [* [$ K% [
- 8 i6 {+ q6 g. X! i+ U3 E
- GPIO_SetBits(GPIOD,GPIO_Pins_13|GPIO_Pins_14|GPIO_Pins_15);' H6 y& }- I% u9 w3 n
- }
3 n. ~; B0 @* w4 m" G - 8 ~; ?3 ~+ T; J$ p) B
) w. {2 N+ q; Q, ^6 r v# S. }- 4 _' p" C2 ]$ m; Y4 i7 j( z b+ l2 ~
- $ _. j. ~* U3 m# |/ @4 M/ m
- - a2 U# z' G" z7 Z- l. u
$ r& K: W( M6 H+ @: l
3 l9 w; L, @2 C+ J; C1 j4 o5 c% G' f
$ q) E9 H# p- m, N# j7 B) f$ V
1 R0 P% [" i @6 |1 E
/ b% B/ c. N: ]" n: |- B三、简单总结, I9 s2 f' j/ f8 X
通过试用并对比了STM32、GD32和华芯威特等M4处理器,该处理器系统时钟在同系列里具有较高主频,丰富的外设,且代码风格与STM32很像,在国产mcu中具有较高的性价比。
# ?5 t# N2 R$ |3 B7 M: k! |6 j$ F O$ l6 D/ a8 M
; V' ^4 X6 A% n v5 _% Q7 V/ q
! }! r% [" }7 y- O
, Z7 S0 D2 y) `3 \: a8 o6 |) D; U) O/ t
0 C9 x- p6 G: f/ U i
* A; o1 r4 f0 Q0 e3 c/ D0 R; O) A1 q& [9 l2 B
$ K- k# J, Q( l7 D* `6 P' F% p6 r; i/ y6 Y' t
+ o6 S2 n( z' R+ d* z! K6 p5 D( M) P4 Q! L: U. a, ~% w$ n- q& O- r
( W+ Q9 M# k. z# G3 v/ ?8 [' |# ]
7 t5 `" X2 o3 w2 x/ v
/ v6 W3 O4 r' e( u" Y9 P8 u( }
6 N; r5 W7 J+ Z7 X+ i
0 v0 F+ D9 y/ S' M
9 w, [! m+ c4 V+ X5 y5 _6 S
. f4 d$ v6 Q# A$ K- j; ]4 g e& `1 b
! i/ I1 H! e) X1 S1 a/ B5 S
* T& V7 G; s9 M, L S
$ r- j+ n6 S: t
7 d0 N, Q* ~/ W0 y% L7 A |
|