|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、AT32F403ZGT6介绍- 效能/性能
& V$ ?5 \5 R* ^# \/ b3 h# A- ARM® Cortex®-M4主频最
# D4 X9 G. C, Z* k高200MHz - 单精度浮点运算单元
- 內存执行零等待技术
- 2.6V ~ 3.6V 供电电压
- I/Os 可承受 5V 电平
- 温度范围-40 ~ +85°C
" e; n3 Z& I4 P' H9 ^7 G
$ Q$ h: h& A! L5 A% V
- 內存/ F c8 G7 T4 O6 G4 C
- 高达1MB闪存
- 高达224KB SRAM
3 e7 J( I8 I. b. y, l) G$ R' f) T. L2 N+ U) v
- 时钟
% s/ D& `; N9 F" U: p8 s1 s+ ^/ ^' y8 B' j- PLL (200 MHz输出)
- 外部高速 4 ~ 16 MHz晶体振荡器
- 内部高速 8MHz RC振荡器(-40°C ~ 85°C)
- 外部低速 32.768kHz RTC 晶体振荡器
- 内部低速 40kHz RC振荡器
; N4 A# @. a& i) F0 ~! {! p5 l
9 {% C1 z8 k# o0 f& o4 _- Q; k
- 复位和电源管理
- 上电/断电复位(POR/PDR)
- 可编程电压监测器(PVD)
) {8 I/ \5 W3 @3 t; Q
: W/ o" G* O# O2 N
- 仿真高性能外设
5 y2 S k# @1 Z1 r- 3组2M采样速率12位A/D转换器(21通道)
- 2通道12位D/A转换器' K, f/ C, A/ D; x
( u( X% x+ y6 Z 7 q1 j0 n% C, W' j/ Y" R
8 \; G/ U5 v: L7 B" q$ H- 定时器# [' E* q0 e; e
- 3个16位带死区控制PWM高级控制定时器
- 2个32位, 8个16位通用定时器
- 2个看门狗定时器(独立和窗口型)
- 2个16位基本定时器(驱动DAC)
- 1个系统时间定时器: 24位自减型
0 m( ^( L/ r) F( c
. d5 Q: m9 K+ l) |" q
- 外设接口- S2 u P C( n9 K# O4 z
- 3 x I2C
- 4 x SPI / I2S (SPI可达50MHz)
- 3 x USART + 2 x UART
- 2 x SDIO
- USB 2.0 全速接口
- CAN 2.0B3 D. a) f! o/ B
h3 E% A% m4 X* ^7 |/ a
- DMA
7 |0 \6 G* U" G. R7 f6 F- 12通道, 支持定时器、ADC、DAC、SDIO、I2S、SPI、I2C和USART4 A+ Y+ d$ {6 R+ z
, P7 Y. p) k1 v6 o+ o, I' T
- XMC( z0 K# u) M0 a/ @: R
- 支持CF卡、SRAM、PSRAM、NOR和NAND存储器
- 支持并行LCD接口, 兼容8080/6800模式
" W3 j3 I$ N; W2 A& H, ]% b3 R& M$ u
: U& o' T" e# X* l, g$ x% j6 Y/ h
- SPIM3 z( b# }8 s* O
- 外部 SPI Flash memory 扩展(程序执行/数据储存/程序与数据可加密)
, f6 b- [# G/ x4 o3 e0 L9 m3 I5 U- G9 t' i, A3 \) W% K
- 封装8 ~* \6 T+ m0 l
- 48/64/100/144-pin LQFP
- 48-pin QFN
. f9 J% \3 k4 j0 ]" r . c7 A* J- E6 t1 ?. Q( i
+ o4 K: t7 f# H7 K
) i/ w/ M: A' J1 a3 M0 x
! i: O2 H, z# E# \" H8 F5 q- [# r. c5 W% @! r& P
2 _% Z3 }3 Q2 X- v( L ]; l3 `: I2 D
% C1 D" P9 H7 z: R, z7 o% h
( b' T. V; }; w) y/ ]
, H( a9 t# K7 z
- w) T2 F2 }( g1 G m; O% E
( Z8 P2 ~6 M8 n% M
7 }" k! d' \7 _! b
) V! H, ]$ _1 K7 q6 N# |: p
% G3 @" t" \2 ~- K/ j' J7 l, A) \" c$ d2 P
9 w% I3 ]. F+ y2 a& \" Q2 Q
|. w8 B( [2 U# U! }+ A& e7 ^
- |3 }, Q- C& p: s6 Q9 C$ c; X# W; `9 s! a5 z. p
! N m3 o) F) L, p+ b$ p I- C, ^
r) x7 V' B$ P8 m
- E& h4 J' J0 X: `- r( i# _& D
) Q! |# `; y8 d4 } N0 ]" J$ z/ d$ `3 q ]* J4 k. [
+ m q7 J4 g f0 e" {: g1 \. H2 a) f! @: O8 k
, `0 c# D& q3 P' S# O% x, S
( n* G5 ~. ?# C5 O! R; I
, w6 E) t2 v/ v' v# U# I( D( T
; i, M; ~- e$ ^7 O) a3 b i2 z2 O
, X/ b/ E8 _6 g+ Y0 X/ ]8 o, M8 ^3 f& i$ X: x2 Z
0 S! B+ p H* s
; D6 k9 h* q3 U# h6 k5 A$ T( O# Y- K. l7 D% p0 T1 `/ z5 N' l
' v; D2 _& U; o7 n" W; j* T
# g3 {$ G6 n" F; o, h8 K3 Z' Z
% Y. ~& `) P; E3 [5 p% L, H
# Q" S0 S) z- x; Y
Z! f2 S2 [. ~# {" X6 Z' b
. V. _' T0 y( f# @- B' | F" N% ?& m9 W" f6 d1 V# A0 I
1 F; U$ K) [. A2 N) s9 G, ?* D( H/ b0 K7 `2 n1 X
' @, ]3 r+ `7 N3 I7 _& Z7 n @& u! s0 r
! q- L+ L( K! ?8 b; j, ^0 p
6 N, D. g5 W( d8 P% B6 u- F0 o* l* v# `3 m. K3 R6 a( l
2 t7 p( v2 l* J/ {- C# s
1 h" N# E' H+ G; x5 |
二、点亮LED灯; }, E# Y/ R1 @' c7 M" f
' H9 C7 T1 T8 G$ ~' K7 }
点亮LED并结合系统滴答时钟进行精确延时. Z- f. j' z% N# I. t
- #include "systick.h"4 { i3 t& |4 g# i/ x* H) W
- ; b5 s; f; T4 T# T, s9 ^' f6 t
- ! F6 \ g* j( z' d1 |
- static u8 fac_us;: p3 O) l! ^" m# `6 `
- static u16 fac_ms;
' R' Y* M4 R. C! C+ W - " y0 \4 J" t+ E' F
- void systick_init(u8 sys_clock)* v3 d- ^. X. E. S% q9 w4 J \/ q$ K
- {" ?& q5 ?$ o1 K$ I
- SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
" h Z* K2 J3 O; [, n2 s; I -
# [+ `3 t6 e# k/ M$ x - fac_us=sys_clock;- y8 x3 y6 S0 y0 u. a
- fac_ms=(u16)fac_us*1000; `+ Z7 p1 m+ H2 N4 R, h6 j
- }' P2 X& p" F& ^& r
. d5 X# L/ k2 j5 o$ H- //'nus'<=83886! t; E) D/ c- b0 e
- void delay_us(u32 nus)7 R \( |0 ]5 i6 w6 t3 J9 L
- {# |0 @. q# t) ? j& i
- u32 temp;
2 B$ r$ w- C! ^: v) ` - 8 Y. W- I3 A8 A S+ ]
- SysTick->VAL=0;
& r- i1 N4 C0 C; P) M& I6 W# r/ y! k: u - SysTick->LOAD=nus*fac_us;/ k- {$ V$ h) |
- SysTick->CTRL|=0x01;# {, A# r4 l2 p
-
* O+ \* x0 Q3 H& }' w - do/ i& X/ z" Q' Y
- {
4 c0 i5 [; m; d) Y# n+ T9 x - temp=SysTick->CTRL;$ p! k8 g$ D6 i: p6 i9 \
- }while((temp&0x01)&&!(temp&(1<<16)));
: V/ @$ p6 o% E6 D - SysTick->CTRL&=~0x01;+ N9 n8 L; m% ?+ X* v' |- @7 E
- SysTick->VAL=0;
0 |1 A& D- p. I$ ^6 e; I5 Z5 } - }
3 }1 p ^/ x! b* k8 q3 X) f9 c4 w
$ U% [" }/ n/ F5 }- //'nus'<=83
; \; [% Q3 R* X: ~% A, _ - static void delay_nms(u8 nms)
- h5 A! r, z) {. b/ V& o' d2 I( n - {
1 T6 Q3 [9 o" {9 T+ e# f - u32 temp;3 x2 o" b! w/ l% i- c7 s$ Y C
-
& I7 J1 o3 y- N$ k) ? - SysTick->VAL=0;
8 A2 o# D Z& u) ?% g - SysTick->LOAD=nms*fac_ms;
5 v |4 i4 O( C7 i - SysTick->CTRL|=0x01;
' c' ?( U4 u2 j' _8 G. o - ) o- h8 ?; G. _# j0 R( G1 ~
- do
9 D+ @ f0 q& }6 R - {5 R% R) V: m$ W5 d& y
- temp=SysTick->CTRL;
7 a+ K! t* {- b$ c1 E, }- O - }while((temp&0x01)&&!(temp&(1<<16)));$ m* R8 x+ Q: w. s$ v2 H7 ~: b
- SysTick->CTRL&=~0x01;
0 B* Z8 B3 y" q$ |; @- Q - SysTick->VAL=0;
8 T5 ^8 f. B+ ?) w2 M - }; G+ s( C8 I$ W
- 8 Q( f7 t. u9 h' `$ l
- - V3 ] j0 G( \1 @7 D& Q) D1 w: k t
- void delay_ms(u32 nms)) s4 d) _# L0 i" M: S9 j% `) r
- {
3 f' ]; _+ C" a6 I: Y - u8 yushu=nms%50;$ u; Z3 g9 J/ M& i3 f, _
- u32 zhengshu=nms/50;5 v2 m9 a1 M+ x4 z+ i
-
+ f( {8 P9 t3 x5 n - while(zhengshu)
1 Q8 o6 P4 D# ~8 h - {( ^7 r3 |3 g+ V+ @+ F4 r
- delay_nms(50);
Q+ b8 n/ O @. L$ J) x' F) o: | - zhengshu --;3 q# h* } D0 j
- }& K4 F- v# Q- b; D+ u9 H: W
- if(yushu)
$ c5 Q0 J1 b2 M( o) U - {
. V/ v( a3 f2 \$ T( [* Q* q x - delay_nms(yushu);* b5 }8 ?* j) b. h- [
- }* D& V6 N" C; S: T2 Z# p
- }8 \% ~4 c& D8 g
& s3 v' N/ b( D$ P8 r8 T- O
[' W( U: q" z& S! P' E- r R0 D, J6 L) i! a$ V" e! D
5 |+ ], f" V' z) d7 o5 U& ^9 }- #include "led.h"
, P; q- w+ x9 k
9 a! `" z- M0 K, F
2 W4 M; p" K8 u: |; Q6 Q- void led_config(void)6 m5 I4 Z2 d# Y8 c
- {
8 h# [2 ^. d7 ? - GPIO_InitType GPIO_Initstructure;, A5 U$ B# @+ U0 m) v
- 1 k+ X- j& T6 j, D9 ?! J8 a
- RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOD,ENABLE);6 r8 W. N5 I0 L N# e
-
' T7 x5 Q8 b/ w5 e - GPIO_Initstructure.GPIO_MaxSpeed=GPIO_MaxSpeed_50MHz;
6 {3 m+ _/ D3 p - GPIO_Initstructure.GPIO_Mode=GPIO_Mode_OUT_PP;
/ ]& z$ |! f$ j1 s$ p7 U - GPIO_Initstructure.GPIO_Pins=GPIO_Pins_13|GPIO_Pins_14|GPIO_Pins_15;) l2 M! K& u) z O4 t$ o# } d; ~
-
2 q5 E! | a) y( w% s - GPIO_Init(GPIOD,&GPIO_Initstructure);, q/ A* I) V2 h2 B( ^
-
% F( k: z' x+ Q- ?" ] - GPIO_SetBits(GPIOD,GPIO_Pins_13|GPIO_Pins_14|GPIO_Pins_15);; \: ~9 _, Q- ]5 T6 u
- }
! Q7 q9 h/ C0 n: u9 ]" s6 Q - 0 P( \% n# R6 y. y. S
' `( t% {# n, l7 J9 |-
' ~3 f( z0 w) J# j6 L' I
" D2 k4 ]8 p) x! O
- A4 N5 K" f! n+ A7 y# A1 J3 r 2 x# g/ V3 p" g
8 a3 M4 }6 G1 m( C4 y) V2 a
4 b9 q A3 x$ n% \% m5 q1 E( N
. y0 f% F" J3 R( w8 ?: Z9 V& Z+ F" I% f$ B6 {
" B# A# X9 v- Z8 i/ m! N三、简单总结
* U; |5 A9 ?9 f+ F$ `3 x通过试用并对比了STM32、GD32和华芯威特等M4处理器,该处理器系统时钟在同系列里具有较高主频,丰富的外设,且代码风格与STM32很像,在国产mcu中具有较高的性价比。
& i5 w* _; f! z( w/ N
$ ~3 R3 Q; n& m9 n" G3 e n7 T- u# f# C/ \9 c9 e
5 c3 I* U8 `& p* J5 x
! F. g- L* T$ z; r- l) i+ w1 O7 N. w1 p' q/ t% O) t
" ] z f {0 D4 A
. N2 @0 S& v& e+ L: K- h/ {5 @" w% q) F) E, c
E: C; I# D) r4 L8 o, F
* F2 o+ A5 K+ p4 V2 `; R" |; ]+ ^8 l+ |3 F# a
9 k8 {$ v- l$ A/ q% R( J! @! P/ _# i) Q4 J m$ ~* i
5 I( |0 H% ]2 L9 A8 X5 Q2 I: E, I) G9 [1 c" ^
- a6 r% E# J* u- S- r3 L" `5 Q) O2 q" P0 g& |1 F
* X! ]" u& u# G, |/ [
* J1 B6 `3 Q% W5 ]5 q
! q1 |0 L( R7 k+ l, _* {, g1 F+ K4 y) B+ y
' N$ C+ d6 x4 e2 W
' b' q* ?. `6 G. V# N8 _ |
|