|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、AT32F403ZGT6介绍- 效能/性能
- U' L# g) ?0 j! _8 c- ARM® Cortex®-M4主频最
" k! h4 F3 ], ~' U8 j高200MHz - 单精度浮点运算单元
- 內存执行零等待技术
- 2.6V ~ 3.6V 供电电压
- I/Os 可承受 5V 电平
- 温度范围-40 ~ +85°C
4 n/ V* F1 k. D/ \2 m) ]$ O5 y( |8 }4 |3 |) \+ u1 G9 v
- 內存
9 y! ?7 \3 b1 W2 ~) x) s. t- 高达1MB闪存
- 高达224KB SRAM
0 i7 j9 P8 O% j6 R% G# ?( L. G% J) t
- 时钟
/ k, {4 q3 W2 m3 ^- D8 i- PLL (200 MHz输出)
- 外部高速 4 ~ 16 MHz晶体振荡器
- 内部高速 8MHz RC振荡器(-40°C ~ 85°C)
- 外部低速 32.768kHz RTC 晶体振荡器
- 内部低速 40kHz RC振荡器* K6 g: [1 H1 H8 P
8 C5 W3 ?: _! w. B8 p R' M
- 复位和电源管理
- 上电/断电复位(POR/PDR)
- 可编程电压监测器(PVD)
& L o- O6 _8 m( D( c; g* D- _+ R
- 仿真高性能外设
! d8 w& U# j$ ^3 C1 p- 3组2M采样速率12位A/D转换器(21通道)
- 2通道12位D/A转换器
/ L/ f7 f. B& h5 G e# b& z) N1 f
/ M ~ J9 a: \4 B" Q
3 M6 b' F% B. O1 i f [9 g
- 定时器
l8 a- ~; W" ~: M8 ?) F# t0 _- 3个16位带死区控制PWM高级控制定时器
- 2个32位, 8个16位通用定时器
- 2个看门狗定时器(独立和窗口型)
- 2个16位基本定时器(驱动DAC)
- 1个系统时间定时器: 24位自减型
& i2 @8 C. f. E+ P
8 K t' q$ n# C2 V
- 外设接口
' \ b* c/ W8 |0 {+ V5 \- 3 x I2C
- 4 x SPI / I2S (SPI可达50MHz)
- 3 x USART + 2 x UART
- 2 x SDIO
- USB 2.0 全速接口
- CAN 2.0B
" S3 U" V' U6 C3 ?. w
) {! c9 T$ z: Q0 ?
- DMA
+ b+ Z6 M% L7 u9 Q1 M- 12通道, 支持定时器、ADC、DAC、SDIO、I2S、SPI、I2C和USART
3 y# X1 Q- U5 G0 O8 n) W/ u6 v2 @0 O. C* P2 \6 O
- XMC
2 r3 l0 R+ o& ~5 I8 M; k" t- 支持CF卡、SRAM、PSRAM、NOR和NAND存储器
- 支持并行LCD接口, 兼容8080/6800模式# c' a$ l) W4 |! d8 S& f/ R
; |3 W* I5 m: \
- SPIM
& t. x! \+ I* t& g$ f1 L0 i- w' P- 外部 SPI Flash memory 扩展(程序执行/数据储存/程序与数据可加密)
6 E& b- I$ I/ q5 B2 D9 V" O$ G7 s! A
9 k2 s' n* [: O7 a5 G8 J
- 封装
# F! L( Z" M U: [- 48/64/100/144-pin LQFP
- 48-pin QFN8 r7 E3 R! a7 q* W) y8 O" L2 F
/ ?1 d9 m T$ B+ M7 F2 e
\- j7 u% ` E- l/ q$ `& S9 V; a7 }* }
. i! H! [- C: y9 U) ^
4 Y: S) Q3 }" o
( d g( \/ d, U5 O3 n I
1 n! N( }4 G- Z
8 u" k7 o5 K6 y7 j2 A# f1 Q4 ?' z5 {& i, a( f; e* p' K4 p
! b: X! w0 h/ I* L7 B/ g" }
! Z* ~+ Y/ l4 k( s1 N P, |
" ]. a' x7 b! C+ E2 B" H
8 |/ Y; B( z) s% K% v n
! [& A9 l6 H2 V+ [' c+ j4 J1 {
2 j! m0 j! E- ~/ ?; g8 k3 @6 w$ D2 E i- {1 W$ z
* D+ x" z# D7 z0 c, W' |% {4 }6 ?
( k' m/ g7 c7 U
5 ]" D3 H! E0 G- Q" r& k" n
: j) b7 T o# o$ }1 Y) E. \* I
! J1 ^7 W" \( A6 p1 r
W7 @3 J- Q$ x
. N$ J! x: O. ^$ X2 \* v* C. L: w N: `! B: i
! d& H( _: |( k7 l0 e) B8 q
3 V$ D( W Y- D' k! t4 O
# z8 g9 b. \' \7 P5 D& w! I
& p+ h5 x5 _( V* R' ] y9 d1 I
) W, x+ I0 O, J% x" ^! I% y4 y& Y
5 g L$ H2 r9 |# u9 A8 ~% g& q
" d0 C4 i/ Q) R6 J# G" k ^
9 W7 B/ T; R! {' [5 ^0 x
" u" F2 j& g, [3 m
) m( T4 Q8 k8 i& ^
7 z) Z: m6 b, h( s
8 ?- a1 W1 y' |& y3 [, k. d! {
6 p( a! A+ \$ G: |/ p: |% N# J% u6 d
5 Q* [( n$ v# k7 b/ \/ D. @4 I2 Z0 t4 l: |2 [9 o) r
' j. \4 G f* ?$ d6 @4 Q% G
) l6 \3 t w7 D2 P$ M
2 ?, P8 l. u$ K! x; L$ D3 T1 B2 p8 t5 h0 t" c/ X
* w0 O) _; O3 s' }' Z- ~
0 f! G! x( N" v5 w) B1 o+ }& ~2 m, N, Y% ?4 z
$ M6 K+ x, E/ C: C* [- D5 p
# a2 I* O+ A `2 t9 j
; F7 ^0 n' X/ x' C
9 ]# A% }' [& F5 I, d" {二、点亮LED灯
8 B- X) h4 ^4 F
4 |9 ~. D+ @" q2 S$ {. U8 a点亮LED并结合系统滴答时钟进行精确延时: w& t- @$ y: K) V( |: x
- #include "systick.h" Q, |5 Z2 c$ M. Y0 K! e% H
f. Y8 z2 S/ r: Z
( ?2 v# O. f# R# `! k! E: G- static u8 fac_us;
3 K) u" m. }' v, \2 `# r9 ~5 p" w - static u16 fac_ms;
, S* H( j3 w/ h6 X3 P - 3 a) F* L3 {( m% z4 y2 S$ D
- void systick_init(u8 sys_clock)% P: Z! Z1 _+ I( I+ O% s* P& H+ E. v' f
- {
) l9 i1 g3 P0 |8 W% u& k - SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);% r% f+ E# q! m+ H! q8 Z' H' w- A& w
- 2 i9 u6 S5 @3 V% Y( ?4 Z6 o2 @% r1 O& W
- fac_us=sys_clock;$ K0 i+ `" n/ x
- fac_ms=(u16)fac_us*1000;# w/ U& Y# w5 t: v/ l2 C7 |: J
- }
& F ~. C1 n; e5 p, \6 h! R+ F
& r7 P0 g' J' C4 U4 t- //'nus'<=838861 e' r' H( R8 t3 w- A/ X6 v
- void delay_us(u32 nus)
4 W+ M& v& G0 I( ?5 h" t - {, e2 K8 Y$ ]1 Q
- u32 temp;
+ @0 R( `% M' l1 K! B' h7 ]3 Z - L& c, B+ a O( q
- SysTick->VAL=0;
# C) p" E6 F5 }4 e - SysTick->LOAD=nus*fac_us;
4 N8 ]1 o$ n) H' r - SysTick->CTRL|=0x01;
/ g8 Q0 ~1 Q) G0 N4 F -
* D9 h6 U7 m0 F4 r" s/ L8 w! c - do
' v0 g3 ^5 B5 n1 |9 A - {
8 ?; ?1 l( x& Y - temp=SysTick->CTRL;
; N$ m @- p. z& d - }while((temp&0x01)&&!(temp&(1<<16)));" z& W$ N, G0 A. ^
- SysTick->CTRL&=~0x01;
, U7 `/ y0 @, e6 i - SysTick->VAL=0;
( ^* x2 i! S# r! k5 l# c; o$ B - }/ R1 s! d `7 t) L2 i) @
- $ F4 Q9 o9 S7 |$ @) U
- //'nus'<=83
9 `) W7 J' E* ?2 b( h- m - static void delay_nms(u8 nms)' \) A' r+ o3 O4 Z; o5 u2 b
- {7 Z: T3 m& l% r) A
- u32 temp;
+ i) a* p( X9 R- }7 r; p& A - 5 w; U u$ G& a9 B
- SysTick->VAL=0;
$ _' C) U" o7 k# w; m4 Y: g - SysTick->LOAD=nms*fac_ms;
% g; A- Q7 n; o4 L* o! {4 ~$ F" L - SysTick->CTRL|=0x01;
/ m! D; m9 k/ d- T: W: G6 N - ' q1 Y V# d4 G) y7 d5 T
- do
1 \5 t$ y; J0 y8 k( A W - {* u& F# ~+ l# s3 y D7 Z
- temp=SysTick->CTRL;
, h; G, {6 `0 P! x- `# X2 H$ G - }while((temp&0x01)&&!(temp&(1<<16)));
, B/ c! R1 \2 P" l' s. C" J - SysTick->CTRL&=~0x01;. L: F# H2 s: K
- SysTick->VAL=0;
6 S3 i9 ^/ K& U- s - }. |3 s- e4 `4 t+ I/ ~; q
- $ U1 K5 w3 g' ^/ h& B/ A9 X2 t/ P
- . f+ ~. a( g5 ^& A4 P9 f
- void delay_ms(u32 nms)
4 g5 f7 u6 s) n - {
$ x4 R8 \: W" n - u8 yushu=nms%50;" `, Y6 a: u, M \+ B7 F
- u32 zhengshu=nms/50;( b6 I, j( g+ n$ q* W
- 8 t8 c8 K4 X' A5 O" @1 r
- while(zhengshu), ]$ L3 b, n/ ^+ Z2 }
- {
$ y6 J0 p' u3 O1 b) S0 _ - delay_nms(50);' U; g' s! f7 b/ Y2 c/ V: _* R9 v
- zhengshu --;, t6 o3 u7 o6 K1 `# L9 b U
- }! M! `1 h% N* r0 A) r/ d, A/ C+ W
- if(yushu)
6 _1 v+ C O6 j: e# ]0 @5 w - {
, C& Z _' |9 [ - delay_nms(yushu);
$ u* `" u7 H, L; g* T - }9 B. y; y+ w1 B% k- v$ H
- }! ]; K7 ?8 I) s
- $ q3 j" `1 a" O9 m
5 l$ F3 u+ @, f9 ~5 X& Q! i# S7 p% l' q8 m. |6 @! K
1 x5 W* X) D; q. E4 e) G- #include "led.h"
+ G' e9 I4 [2 G3 i, h9 N
' W/ y" @. i' ^- u- 1 v+ s. K2 l& l# S$ B5 Q& `# {5 r
- void led_config(void)/ C) Z% M, n# X3 ]! Z& f
- {$ ?. r$ ?7 s7 N( c4 G1 G
- GPIO_InitType GPIO_Initstructure;
9 }: E7 }& c. _, Z - 1 T9 k. h% k( w
- RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOD,ENABLE);
( c6 x$ v1 o, L -
f7 b. h2 z+ A9 o - GPIO_Initstructure.GPIO_MaxSpeed=GPIO_MaxSpeed_50MHz;6 ~0 M. p) Z! @9 o' x
- GPIO_Initstructure.GPIO_Mode=GPIO_Mode_OUT_PP;7 d# e8 C" N& Y+ I) j- P3 U1 @% r
- GPIO_Initstructure.GPIO_Pins=GPIO_Pins_13|GPIO_Pins_14|GPIO_Pins_15;, b* E+ \. v* `- i' \
-
1 @1 ~. m0 i) c; I - GPIO_Init(GPIOD,&GPIO_Initstructure);+ y( r" p$ [" n: j/ F5 K
-
, H( m* O3 R! a9 i) q# g% f - GPIO_SetBits(GPIOD,GPIO_Pins_13|GPIO_Pins_14|GPIO_Pins_15);
' u* q! j# I5 I" s0 z( H/ |' ] - }& m- M; M4 y/ c% T2 [: o% e
. K' v1 R; O7 f2 I; F- ( ?& D. G4 j1 p
-
; @% z& a! Y' A$ { - ; |* q7 r9 f% M( V" K& y( {. @
+ Q( ^$ @- j K5 C4 J
r8 [$ M. o. L8 W9 C( Z: O2 x7 u! o8 P) L* i/ s, h# j) [# D
% _- ~. p0 ]# I% T1 D
; t/ o" y4 W ]( I" K, t7 n5 T4 D) `& h8 n) l2 o
5 w/ s. r0 C! r7 `1 j, v7 e9 L! Y三、简单总结( u+ Z% Y: ?& Y0 b% x
通过试用并对比了STM32、GD32和华芯威特等M4处理器,该处理器系统时钟在同系列里具有较高主频,丰富的外设,且代码风格与STM32很像,在国产mcu中具有较高的性价比。/ ?; p' n% W) ~* y
8 d, N! B# ?7 m4 H4 @2 o* X; \0 U) f7 [3 q5 c |. S
% g2 H% \1 u1 G4 v3 k/ `+ l
( o5 C0 }# s/ T* D4 [6 ]" C+ n& q3 c
$ Z: F3 \ o8 x/ Q
6 L8 k% M: I u
X7 C, _% y$ v S- n% k1 f( o9 b, s! N
" f0 d9 A" t3 b5 @2 @ o
5 B& ^% W. N, F- W" _6 D& W' ^ Y
o( W# A& j% E2 {% V% y/ i3 [8 {% e( V. v+ ~
# S$ y% D- I f6 K4 a: U- H7 v
) G+ {0 a0 r& ?7 w; x: y, C7 S* N
8 u! b1 \! c- V4 A/ G/ q# \7 M- F
! P. y& w. ^. d* U& j0 e/ F
! W K# @6 h& d* s- t; `- q T+ |1 W( x h# X( @
6 L( C x* d2 a8 X
1 K1 x) y) N( G& q6 q4 B4 z. g% ?( Q9 m
. B, _2 H- L0 X) S% k }
|
|