You are on page 1of 5

START_PROGRAMING

One-sentence summary of this page. Updated Apr 16, 2012 by phuongmi...@gmail.com

VI IU KHIN STM32 L G
STM32 From Wikipedia STM32F10X DATASHEET STM32F10X USER MANUAL

BT U VI LP TRNH ARM CORTEXM3


Sau y l phn hng dn cho mem mi hc STM32. Ch yu ch ra cc thao tc cn thit c c chng trnh Hello World xut ra cng USART hoc l chp tt n LED (PB1) s dng Keil IDE nh th no. Project c bn: stm32_base.rar Mc ch ca stm32_base nhm to ra project nn tng p dng cho nhiu project khc nhau, ta c th xem qua cu trc ca project nh sau:

1. Phn c nh bao gm th mc Libraries, ta ch s dng phn ny, khng c php modify, chnh sa source. 2. Phn user project : trn hnh c 1 project c to sn c tn l BASE, v sau ny nu mun to project mi ta ch cn COPY th mc BASE v RENAME n thnh tn project m bn cn lm.

Tin th xem qua cc thnh phn trong BASE project nh th no :

BASE project c to ra vi 1 s thnh phn c xem l cn thit cho tt c cc project thng thng, v d nh GPIO v USART. USART c retarget chng ta c th hon ton s dng cc hm xut nhp C chun trong th vin stdio.h v d nh printf(), scanf(), getchar(), putchar()---> rt hu ch cho vic debug firmware. + main.c : Cha code chnh ca project + stm32f10x_it.c : Cc hm interrupt handler c khai bo trong y. + StdPeriph_Driver: Cc hm th vin ngoi vi chun ca ST (Phn ny ta ch s dng v ko c php chnh sa) + CMSIS: Cc hm th vin chun lin quan n Core ARM Cortex-M3 (Ch s dng v khng c php chnh sa) + Startup: Code Assembly cho vic startup h thng (nm trong th vin chun, ch c php sa nu thc s cm thy cn thit) + Retarget: nh ngha li cc hm xut nhp th vin stidio.h c th lm vic c vi USART1.

VIT CHNG TRNH HELLO WORLD


Chng trnh hello world c th c vit 1 cch d dng theo bc sau:

dng 140 add vo on code printf ("Hello World") (xem hnh)

VIT CHNG TRNH CHP TT LED TRN PB1


Cc bc thc hin nh sau: - Tch cc lock cho port B. Mi khi s dng port no th t nht ta phi tch cc clock periph cho port ny. Ngi ta ch cho php bt tt ngoi vi vi l do tit kim in nng tiu th. Nhng ngoi vi no thc s cn thit th mi c bt ln. Do LED c gn chn PortB (PB1, EASY_STM32 cho tch cc mc thp) v th ta cn tch cc portB trc khi s dng. Thao tc ny c thc hin hm RCC_APB2PeriphClockCmd(), chng ta add thm 1 thnh phn RCC_APB2Periph_GPIOB vo tham s u tin ca hm ( dng 78) theo hnh sau:

- nh ngha thm 1 s hm, macro tin cho vic lp trnh, v d ny ta thc hin thao tc o trng thi sng tt ca n LED, cc macro s c nh ngha nh sau (t pha trn hm main (line 45):

Khi mun thc hin o trng thi (toggle) ta c th vit theo c php sau:
LED((BitAction)(1-LED_STATUS));

- Cng vic k n l cu hnh chn port iu khin LED (PB1)

trng hp ny ta set PB1 mode GPIO_Mode_Out_PP ( output push pull) - K n chng ta cn c 1 on code thc hin chc nng delay 1 khong thi gian no :

- Cui cng, chng ta add on code toggle LED vo vng loop chnh ca hm main():

Vi project c bn stm32_base.rar chng ta c th vit chng trnh chp tt n LED trong vng 5 pht. Sau khi bin dch vo load firmware vo MCU th chng trnh s in ra console dng ch Hello World v ng thi chp tt n LED trn portB PB1.

You might also like