|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、AT32F403ZGT6介绍- 效能/性能/ u' {6 q9 e* F. D
- ARM® Cortex®-M4主频最& W5 H) g9 W+ ?4 M6 ?5 ^- u
高200MHz - 单精度浮点运算单元
- 內存执行零等待技术
- 2.6V ~ 3.6V 供电电压
- I/Os 可承受 5V 电平
- 温度范围-40 ~ +85°C m j Q; ^% r+ F3 {
) s# K7 z# k/ g' ]. t6 d
- 內存
! v( b, s" ~' a6 f4 Q2 B- 高达1MB闪存
- 高达224KB SRAM0 ^3 S3 @7 d2 O @9 b4 L
1 X+ e9 C" d4 q, h, r4 c" Q
- 时钟
; J, l. c/ n+ x! \9 |- PLL (200 MHz输出)
- 外部高速 4 ~ 16 MHz晶体振荡器
- 内部高速 8MHz RC振荡器(-40°C ~ 85°C)
- 外部低速 32.768kHz RTC 晶体振荡器
- 内部低速 40kHz RC振荡器/ T+ C2 h5 R3 g" ? N
2 `* |' I5 J r" {2 o+ z& [
- 复位和电源管理
- 上电/断电复位(POR/PDR)
- 可编程电压监测器(PVD) G; d( g6 K0 m. L9 \' B2 _
: K' B6 l3 z7 z- E: x- t6 U
- 仿真高性能外设% G+ K3 _+ O/ U+ n. k
- 3组2M采样速率12位A/D转换器(21通道)
- 2通道12位D/A转换器
/ z ?) |) j2 i/ W9 s( P) b$ q6 T8 e1 [7 i/ m4 u7 l6 _
1 p9 w) |; d }+ g- b- y' i
: ^/ r$ g+ W5 W* M% v- 定时器' }5 r: c. Y" V/ K
- 3个16位带死区控制PWM高级控制定时器
- 2个32位, 8个16位通用定时器
- 2个看门狗定时器(独立和窗口型)
- 2个16位基本定时器(驱动DAC)
- 1个系统时间定时器: 24位自减型
& c7 Y! o5 t8 B4 _. k8 W- S, b/ u, @; j7 K7 [
- 外设接口 n9 G* Y) T' P8 D& T
- 3 x I2C
- 4 x SPI / I2S (SPI可达50MHz)
- 3 x USART + 2 x UART
- 2 x SDIO
- USB 2.0 全速接口
- CAN 2.0B
9 Q% d1 L3 a, r
; b K+ z* T" o8 j" F1 Z! ^- e4 b
- DMA
$ t" e0 @6 _1 Y' A6 Z- `/ x- 12通道, 支持定时器、ADC、DAC、SDIO、I2S、SPI、I2C和USART6 O) M# ?* E5 h/ ?1 p2 V- |- q8 N) A
0 W# r! M# T7 y* y- T: j+ W
- XMC4 G5 [+ m1 W1 X& h! ?
- 支持CF卡、SRAM、PSRAM、NOR和NAND存储器
- 支持并行LCD接口, 兼容8080/6800模式
0 k+ L! B) H; w, y
. K G `9 { W. V8 \+ t. f8 t
- SPIM
' P8 d$ G2 S. {7 b- 外部 SPI Flash memory 扩展(程序执行/数据储存/程序与数据可加密)
" s4 S5 ?+ [! @* h5 h4 B) ?$ e) w
5 _! j, S" ]8 y% X
- 封装: p9 N2 B- s( ^- f) e
- 48/64/100/144-pin LQFP
- 48-pin QFN
. o, {5 L* D9 |( N
; v$ ]) l C, x. C5 X
$ g" Q! u4 A' ^% y; d: o1 O2 p3 a/ q' @
' T& \2 V0 z) m! L3 e
# m0 {+ |" x/ _. M) O! n
) W" d: j6 R- s8 Y9 ^7 ]
9 @$ Z: D1 G' C. ^5 }
5 k; I9 L2 Z, @. M; z0 E- v8 O6 e( ~% L
1 p' R. w {& Z" x- v
5 m8 m2 G7 q/ x- Z: P
+ \' y& }5 ?1 o% ]* S2 Q
* h E! l4 p# |2 r) n
& q6 {9 q% [% D: O0 v& `5 _8 v) E: k7 @) \5 C S, q
% r& k3 ?' X' Q. y
; Y; w: S- |; Q9 t' w- |
7 B7 Y. J) T9 T+ ~; d
9 }/ x6 `; W6 H6 `$ t' G4 N
+ Q; I$ p K* M* [. Z; B% N6 t# A) f( M$ V" j
" }7 [1 @, X; _7 X# Z$ C
+ B: |9 M9 o; H' P! q( ?) t% d! m. z! Y" r t3 q5 R1 u
d% j$ u7 L/ N" P4 _5 O
& ~5 i2 G( P# H8 [% X& J% }. x: h. V# z& ]! B+ a
7 z: M9 P7 L0 C8 V0 E
8 D/ C2 [2 k6 h% S8 U# o7 c6 g
( H/ g1 q6 d& A h8 z3 |0 \
/ ^# v, ~( e0 H& |1 _% ^/ V/ H# D# j( E$ o
/ ]0 `9 u# W/ X9 ~
3 Z1 y4 z5 f1 c1 U' R7 p0 ^" r& C6 u; X
' d4 K5 f: u F. g& I: N) x
, \' I& W0 @# \: d
9 e; K2 w T1 ]5 u# n; y
9 k2 d; x" |5 o) P8 n7 ?, V: W9 ^! o. Z8 B7 G, L' G/ m
& K: C. c8 @+ ~3 t3 y
; `6 K* T; e- G% D
6 Q$ b: B' g3 N8 T7 @* ]+ K. O% V; L
" C$ [! L( J; m# f1 K1 |
! n" I7 `1 f& }0 Q+ V
% e7 W. a7 n$ M8 ~, k s+ @+ h1 }1 j l7 m5 `* ~& w5 ^3 ~
# J0 x! ^ t( x. c
) ~# ^9 w# P! w' y+ E
! M' f0 Z, c) ~6 b
7 X' U" q% E$ G2 s# U5 b
二、点亮LED灯# Z& ]0 Y& j) }! p% b" H
4 M+ j& \' j+ j+ |, x. ]2 J0 P
点亮LED并结合系统滴答时钟进行精确延时
! e+ w( Q' [3 ?9 w3 V- #include "systick.h"5 |' }( s* j3 N, c3 T% f
- 9 K( \" V! {, u6 z! b, ~" S4 F+ C
- 4 c% T/ C& } m& y0 M3 m
- static u8 fac_us;
, A6 m* C- c k# I* i6 i2 f% P - static u16 fac_ms;
% ^3 c1 ?% R; w5 }) z9 x: b. M - & Z$ _" \, _) Z; j* b
- void systick_init(u8 sys_clock)$ ~: S, K, A9 Q K
- {
p' _7 \+ b8 r" Z - SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
# _9 i1 T# n# n8 j0 Y0 ?- C -
8 c0 m9 ] X$ }2 P - fac_us=sys_clock;' M# h. q) S/ ~, X$ |) \6 v
- fac_ms=(u16)fac_us*1000;7 C- y. W- [5 C& _0 [, W' Q
- }3 I, m+ f( V. r4 u3 a
; |; \, w, V5 }+ V- //'nus'<=83886
0 u7 _1 q) L) f - void delay_us(u32 nus): i% i y0 V/ z: ~0 @2 Y ~
- {$ e" {9 U9 [8 }& Z5 l( M
- u32 temp;
0 H) r, S0 P$ G0 |. g - 5 n: F( c- e6 Y
- SysTick->VAL=0;
! p8 V( Q7 ^& [# f' c& ^ - SysTick->LOAD=nus*fac_us;
) u# N, R+ g d- h9 z6 p* R - SysTick->CTRL|=0x01;
/ p8 y2 o0 ]7 h8 q7 X. Y8 v - - r' p7 }" p `
- do
' O9 ~5 z7 Z# j& Y - {
$ W" I- K A! f+ g" w) P - temp=SysTick->CTRL;8 `* h% X8 D! P1 _/ q
- }while((temp&0x01)&&!(temp&(1<<16)));
. b2 p8 V( L+ S* D) V; _ - SysTick->CTRL&=~0x01;: N2 @; a( ~# u) B5 _! [' c
- SysTick->VAL=0; G2 d- N; ^. ]* [' |
- }
' \* S3 d; Y0 ^& s: M P& R4 |+ d( p
; t$ I+ h& ~9 K: b. R- //'nus'<=83
& q9 F. D/ |. E3 ^* D$ w5 } - static void delay_nms(u8 nms): X- d! ]6 ?' F4 y) y% \4 J
- {
7 m. ~# i8 k2 g6 P - u32 temp;
6 L! }0 O+ U& ^ o* ] -
- b* U1 z0 j& t1 l6 K! ] - SysTick->VAL=0;% A# M& C2 c' f( g b6 T) `
- SysTick->LOAD=nms*fac_ms;
+ _7 Q- a; {* ]1 v - SysTick->CTRL|=0x01;0 G9 Z0 ^* _6 Q( L; ~9 t
-
. r n: A/ T6 W+ P0 d" \ - do; B7 a) K8 ]3 d- w% N' \
- {: z" |1 l( r$ {- V7 H s
- temp=SysTick->CTRL;3 }% [& K* ^" L9 \
- }while((temp&0x01)&&!(temp&(1<<16)));8 J- c, o% A/ j9 Z9 l0 T+ E8 \
- SysTick->CTRL&=~0x01;
1 E2 `3 G7 Q! b ?/ f* e' {5 C - SysTick->VAL=0;
2 D9 @) K/ f' c - }/ b' } Q: ]/ A3 p" J
9 _: A* @7 q: }7 W( s- 9 H f" x7 X) {, @* B. P) Q! L
- void delay_ms(u32 nms)% a. r4 X4 ?, R$ L0 b9 A" v. o a
- {
4 c$ @3 W/ Y; ?+ G5 D - u8 yushu=nms%50;
: c2 m5 \& K3 j) B; @6 l% [ - u32 zhengshu=nms/50;, b7 R: ^ z% D3 i" [: q( d
- ; g8 g2 t' p: k; I H5 `0 V3 ~
- while(zhengshu)
' `; b2 O# h; m' G - {
8 N2 a/ u( Z) k) }" H: b0 B - delay_nms(50);$ L+ \% u+ N$ C. \8 r# }4 ^6 l
- zhengshu --;3 ]8 x! `/ S8 M- Q
- }) d) n/ G+ Z3 U) g
- if(yushu)
; w D% Y6 {$ K- w4 j - {# \ r0 Y" i4 Y
- delay_nms(yushu);
. x1 ^/ {0 Z, } - }
9 P7 b$ P' q- N6 C, a) I0 R - }
6 h: `3 A, F6 y. p# }3 j4 ]
- K+ ~% V l3 K6 \; [8 k ) u% F8 ~5 I& N8 a' ~ v0 c" u9 `
3 e3 M# k+ d( f1 ^5 p
, O. I) h0 S5 T4 @4 Y- c5 X2 W- #include "led.h"+ c) w; z+ _- X4 ]0 _' m0 R3 }
- \3 g' ` s8 f
& q: o# E ` z% `- void led_config(void)9 s0 z0 I& C" k
- {
, e; ?/ J2 }4 J) E1 S - GPIO_InitType GPIO_Initstructure;% E% Q2 Y1 J( n/ |3 d
-
6 R8 a0 h& Q" o - RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOD,ENABLE);7 y5 q$ _" J3 y0 P- p
-
( n8 [+ I: L \. A) _' r - GPIO_Initstructure.GPIO_MaxSpeed=GPIO_MaxSpeed_50MHz;
+ s' j4 J( p/ r& N$ s, q - GPIO_Initstructure.GPIO_Mode=GPIO_Mode_OUT_PP;
q, P3 V ?5 a/ z9 a' p! g% m- p* H1 c - GPIO_Initstructure.GPIO_Pins=GPIO_Pins_13|GPIO_Pins_14|GPIO_Pins_15;- G2 x: v2 r- y. ~
-
& ], s, X0 ` I0 \" ] - GPIO_Init(GPIOD,&GPIO_Initstructure);! D0 ]/ n0 V' K& c- c
-
1 O* v# V* {! S' W - GPIO_SetBits(GPIOD,GPIO_Pins_13|GPIO_Pins_14|GPIO_Pins_15);0 Y. Q5 G; U( t( \9 ]& c
- }4 G" u/ y Y, L- n% ]8 l
- 0 P$ n2 o3 k* I, m! P
0 X! e- g- X* ~7 N- ( K3 G; m; L& [7 G9 z$ m
- + [9 Y0 o+ w1 o9 q* R
- 3 s! C4 _" }& J% U
( c2 d( P$ ^( I9 }. T+ q6 P, y
. E6 a+ P9 Y+ a4 b, h* G
/ h9 G, e% s5 E1 b# O! y5 h! B, w
* P" s; z1 f& x! \/ A7 h
, r9 ]0 H) t h9 P1 O三、简单总结
$ t( y& r/ f( Z, I( V通过试用并对比了STM32、GD32和华芯威特等M4处理器,该处理器系统时钟在同系列里具有较高主频,丰富的外设,且代码风格与STM32很像,在国产mcu中具有较高的性价比。
/ i6 ]! D# a; S5 c+ ~ H9 ~- e8 H8 j3 G# l4 |6 N
9 B2 v0 n; Y v& i" v' `1 S |
. u+ b( w# }' V( u* K4 q+ V- _
/ V! U" Q8 l/ L% }( Z9 I$ Q+ k- o, @4 Y$ P2 h
+ c8 J4 I" j; w8 L* @
6 o# v: I7 v! F2 }5 `8 T# n, S1 F& ?0 J. B) C% s
7 m( q2 R7 D* d" u# m
' ^3 ^8 L4 H2 ]/ H( Q2 e4 v
7 x! _) `$ x# A% {- a7 ^1 A3 R0 s( O) y! N4 L) `: @( o
2 }; a8 N; Q" ]- Q8 [; q
& z' d- Q0 f$ D8 ?8 _( S
3 C. S7 e6 W0 p; R' G
# o) J8 ?' L4 [4 E* h1 ?% O; Q0 d: Y
+ E. H4 j, R% s n6 b+ A' M4 D
C/ F! W" C3 W8 G# c' L) t! G! ~+ b' F" w! @
! l! Z/ N* o8 B0 D6 S; [
z# j7 s$ N# G2 X( h* Q
r* x3 T7 @4 b& X g/ J, G/ T" A" [; R |
|