You are on page 1of 6

ARM-Cortex-M3 Gii thiu b th vin CMSIS

Xin cho cc bn, tip theo bi ging th nht, hm nay ti s gii thiu v b th
vin chun CMSIS dnh cho ARM ca ST.
1. Gii thiu tng quan
CMSIS l b th vin chun ca hng ST vit dnh cho cc chip ARM ca
hng.
Khc bit hon ton vi khi chng ta lp trnh vi cc vi iu khin nh
8051 , PIC hay AVR, khi lp trnh vi cc chip , ta phi tc ng trc tip
ln cc thanh ghi n c th hot ng. iu ny bt ta phi bit ht cc
thanh ghi ny th mi c th s dng c.
Tuy nhin vi dng ARM ni chung v ARM-Cortex ca ST th s lng
cc thanh ghi l rt ln, ta kh v c th ni l khng th tm hiu ht cc
thanh ghi ny, v nh th rt kh lp trnh.
V b th vin CMSIS s gip ta thc hin iu ny.
B th vin CMSIS cha y cc a ch thanh ghi, cc nh ngha cho
cc kiu d liu khc nhau, v cui cng n a ra cho ta cc hm thit
lp, v hot ng.
Nh vy v bn cht th CMSIS gip ta tc ng n cc thanh ghi ca vi
iu khin.
C th hiu CMSIS tng t nh cc b th vin ca lp trnh C trn
Window nh l stdio, spring,math.... V d nh ta mun dng hm printf
xut cc k t ra mn hnh, ta cn khai bo include stdio.h th stdio.h y
chnh l th vin cha hm printf ta dng, v v thc cht th hm ny
gip ta tc ng ti cc thanh ghi ca CPU lin quan n xut d liu ra mn
hnh, v ta cng khng cn bit cc thanh ghi y l g.
Vic lp trnh trn cc b th vin s gip ta tit kim c thi gian v
cng sc, gip ta c th thc hin c cc bi ton ln d dng hn.
2. Cu trc b th vin CMSIS
i km vi bi ging ny l th mc c cha b th vin CMSIS.
Cu trc ca n c th hin qua hnh v sau:

N gm c 2 th mc ln, th nht l CMSIS, c cha cc file cu hnh cho


li Cortex-M3. V th mc STM32F10x_StdPeriph_Driver cha tt c
Driver cho cc ngoi vi nh ADC, DAC, USART, SPI,I2C ca dng
Cortex-M3.
M th mc CMSIS theo ng dn:
\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
Ta s thy c cc file nh sau:

y l cc file statup cho cc chip M3 khc nhau ty thuc vo b nh ca


chip, v d nh chip m trong cc bi ging s dng l 512K th ta s add
file startup_stm32f10x_hd.s vo trong project KEIL C.
Mt file na m ta cn phi add vo project l:
core_cm3.c
nm ng dn: \CMSIS\CM3\CoreSupport

Cn file core_cm3.h s c t ng gi bi trnh bin dch sau khi ta thm


ng dn cho KEIL C.
Tip theo l th mc cha Driver cho cc ngoi vi
STM32F10x_StdPeriph_Driver
N c bao gm 2 th mc con, mt l cha cc file nh ngha(.h) v mt l
l cha m ngun ca cc hm(.c)

Ta cn add cc file .c ( nm trong th mc src ) vo trong project ca KEIL


C.

File misc.c l file Driver chung nn ta cn add cho mi project th mi c


th s dng c cc Driver.
Khi mun s dng ngoi vi no th ta s phi thm cc file Driver tng ng
vo.
V d nh mun s dng c Driver cho cc chn IO (GPIO) th ta cn
thm file stm32f10x_gpio.c , tng t nh th cho cc ngoi vi, module
khc m ta mun s dng.
Sau khi add cc file .c xong th ta thm ng dn dn cc file .h ( th mc
inc (hng dn chi tit v thm ng dn c ni n trong bi gii
thiu v hng dn KEIL C).

3. S dng b th vin CMSIS


Sau khi thm cc file cn thit vo project ca KEIL C, by gi ta c th
s dng c cc hm trong b th vin ny.
Lu , ta cn thm #include "stm32f10x.h" trnh bin dch c th bin
dch c.
By gi ti s v d vic s dng Driver cho cc chn vo ra (GPIO).
M file stm32f10x_gpio.h ta s thy cc nh ngha kiu d liu, cc nh
ngha hm c th tc ng ti cc thanh ghi lin quan n cc chn vo
ra.

Nh thy trn, l danh sch cc hm m ta s s dng c th khi


to, c, ghi ln tng chn hoc c Port ca chip.
trong file stm32f10x_gpio.c s l m ngun ca cc hm ny.
Hnh di y l v d cho m ngun ca hm GPIO_ReadInputDataBit

Nh ta thy,hm ny gip ta tc ng ti thanh ghi IDR ca Port m ta


mun dng (GPIOx), x y c th l A, B, C.
V d nh ta mun c xem chn s 1 ca Port A l mc lo-gic no th ta gi
hm trn vi cc thng s nh sau:
GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1);
V hm ny s tr v gi tr tng ng.

V chi tit s dng cc hm khc s c ni n trong bi ging tng ng


vi cc ngoi vi v module m ta mun s dng.

You might also like