You are on page 1of 24

Fukusei Electronics

Phone : 0909596937
Email : phucthinhel@yahoo.com
Hướng dẫn nhanh sử dụng

Trang 1
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Lục mục
Hướng dẫn thiết lập Jump và nạp cho board ST ARM Development Tr.3
Tạo dự án với Keil ARM Tr.4
Các bước nạp chương trình qua FLASH LOADER DEMOSTRATOR Tr.12
Nguyên lý mạch Tr.23

Trang 2
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Hướng dẫn thiết lập Jump và nạp qua FLASH LOADER


DEMOSTRATOR cho board ST ARM Development

J1 chọn áp vào chân J4 chọn áp vào chân


Vbat của ARM BOOT1 của ARM
Vị trí Chế độ Vị trí Chế độ
1-2 3.3v 1-2 GND
Nguồn cấp 2-3 3.3v
2-3 từ pin 3.3v

J11 Chọn nguồn cấp SW1 Chọn chân


cho Board mạch BOOT
Vị trí Chế độ Vị trí Chế độ
1-2 USB 1 USB
Nguồn cấp boot
2-3 ngoài DC (
2 BOOT0
9 tới 15V )

CHẾ ĐỘ HOẶT ĐỘNG ARM


Nạp J4:1-2 SW1(2):OFF
Chạy J4:2-3 SW1(2):ON

Trang 3
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Tạo dự án với Keil ARM


Giới thiệu cách tạo mới dự án cho vi xử lý ARM Cortex-M3 STM32F103RC bằng Keil ARM.
Cùng với đó là cách tích hợp bộ thư viện chuẩn CMSIS của ST dành cho dòng ARM này.

1. Bộ thư viện CMSIS


ST cung cấp cho người dùng bộ thư viện chuẩn lập trình giao tiếp với thiết bị ngoại vi tương
thích với chuẩn CMSIS. Thông qua bộ thư viện này, lập trình viên dễ dàng giao tiếp với các thiết
bị phần cứng chuẩn của các dòng Cortex-M3 của ST.

Thư viện được chia làm 2 phần:


+ phần hỗ trợ nhân Cortex-M3: bao gồm mã giao tiếp với nhân CPU, và đoạn mã start up
code.
+ phần hỗ trợ các thiết bị ngoại vi: chứa toàn bộ các hàm thư viện điều khiển thiết bị ngoại vi
của ST.
Cấu trúc thư viện CMSIS như sau:

Library
+ CMSIS
+ CM3
+ CoreSupport //thư mục chứa hàm hỗ trợ nhân Cortex-M3
+ DeviceSupport
+ ST
+ STM32F10X //System startup code
+ startup //Start up code
+ Documentation //tài liệu hỗ trợ
+ STM32F10x_StdPeriph_Driver //thư mục chứa hàm hỗ trợ thiết bị ngoại vi
+ inc //thư mục chứa header file
+ src //thư mục chứa mã nguồn

* Lưu ý: Các hàm được viết và đặt tên theo chuẩn CMSIS, lập trình viên cần tuân theo các quy
tắc của CMSIS khi sử dụng hàm, tránh viết lại các hàm truy cập thẳng vào phần cứng khi không
cần thiết.

2. Khởi tạo dự án mới


+ Mở Keil IDE, chọn menu “Project->New uVision Project” để tạo dự án mới. Giả dụ đặt tên dự
án mới này là 24h_Led.
* Lưu ý: Thường khi tạo project mới hệ thống file quản lý dự án của Keil hay bố trí ở thư mục dự
án, điều này dễ bị lẫn lộn với các file nguồn, ta nên tạo một thư mục con để quản lý các file dự
án này.
Chọn chip STM32F103RC cho board

Trang 4
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Hình 1: Khởi tạo dự án

+ Sau khi dự án mới được tạo, ta nên tổ chức lại hệ thống mã nguồn để dễ dàng theo dõi.

Hình 2: Tổ chức thư mục mã nguồn

Trang 5
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Như hình 2 ở trên ta tạo 4 nhóm file, các nhóm “CMSIS”, “StdPeriph_Driver” và “Start up” sẽ là
các files từ thư viện CMSIS của ST.

* Lưu ý: Khi tạo mới dự án, Keil sẽ hỏi người dùng có sử dụng "start up code" sẵn có không.
Chúng ta không sử dụng "start up code" này của Keil mà sẽ dùng của ST có trong bộ thư viện
chuẩn.
+ Tích hợp thư viện CMSIS vào chương trình

Chúng ta sẽ lần lượt tích hợp các thư mục trong thư viện vào dự án như sau:
+ Nhóm “CMSIS”: thêm file core_cm3.c ở thư mục “\Libraries\CMSIS\CM3\CoreSupport” và
system_stm32f10x.c ở thư mục “\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x”
+ Nhóm “StdPeriph_Driver”: thêm các file liên quan đến điều khiển ngoạI vi, ở dự án này
chúng ta cần điều khiển cổng GPIO, UART nên cần thêm các file: stm32f10x_gpio.c,
stm32f10x_usart.c và stm32f10x_rcc.c ở thư mục
“\Libraries\STM32F10x_StdPeriph_Driver\src”.
+ Nhóm “Start up”: thêm file startup_stm32f10x_hd.s ở thư mục
“Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm”.
+ Nhóm “User”: chứa file của người dùng, giả sử thêm file main.c của ta vào đây.

Trang 6
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

* Lưu ý: Đối với nhóm StdPeriph_Driver, nên căn cứ vào nhu cầu điều khiển ngoại vi để thêm
vào các file tương ứng, tránh thêm các file dư thừa vì làm tăng thời gian biên dịch và tốn tài
nguyên hệ thống.
+ Khai báo thư mục thư viện cho dự án
Sau khi thêm các file cần thiết cho dự án, chúng ta chưa thể biên dịch thành công được vì còn
thiếu đường dẫn tới các file khai báo thư viện CMSIS
Mở khung điều khiển cấu hình dự án

Chọn tab “C/C++”

Trang 7
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Thêm các đường dẫn thư mục sau vào dự án:


+ \Libraries: thư mục chứa Libraries CMSIS
+ \Libraries\CMSIS\CM3\CoreSupport
+ \Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
+ \Libraries\STM32F10x_StdPeriph_Driver\inc
* Lưu ý : Người dùng có thể thêm vào các đường dẫn thư mục khác của dự án.

3. Cấu hình project


Sau khi đã thêm các file cần thiết cho dự án, chúng ta phải thiết lập các thông số cơ bản để Keil
có thể biên dịch ra file thực thi.
+ Để nạp chương trình xuống board , chúng ta cần cấu hình Keil biên dịch ra file hex(hoặc bin).
Mở khung cấu hình dự án, chọn tab “Output”, check và ô “Create HEX File”

Trang 8
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

+ Để tiện sắp xếp tài nguyên của dự án, ta nên xếp các file tạm được sinh ra bởI Keil vào các
thư mục riêng

Tương ứng với các file object(tab Output) và linker(tab Listing) ta lưu trong thư mục “Obj” và
“Lst” cho tiện theo dõi sau này.
+ Cần lưu ý là với bộ thư viện CMSIS, chúng ta sử dụng khá nhiều kỹ thuật “macro” trong lập
trình. Có một số “macro” cần khai báo “define” sẵn trong dự án để có thể biên dịch thành công.

Trang 9
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

* Lưu ý: Nếu sử dụng bộ thư viện chuẩn cho thiết bị ngoại vi, nên khai báo macro:
USE_STDPERIPH_DRIVER.

4. Trình diễn
+ Nếu có sẵn board , chúng ta có thể nạp trực tiếp file .hex sau khi biên dịch xuống chíp thông
qua Flash Downloader của ST bằng cổng COM.
+ Nếu không có board, chúng ta có thể xem bằng cách dùng Debug Simulator của Keil

Trang 10
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

+ Chạy Debug chương trình, mở cửa sổ theo dõi các thiết bị ngoại vi ở menu “Peripherals” chọn
ngoại vi tương ứng, giả sử đó là Port C của GPIO.

Bấm F10(hoặc F11) để chạy debug từng dòng lệnh đồng thời theo dõi giá trị của Port C thay
đổi.

5. Tài nguyên dự án

Download bộ thư viện theo chuẩn CMSIS của ST tại đây.

Download dự án mẫu tại đây.

* Lưu ý là khi down về, các bạn để 2 file zip trong cùng một thư mục và giải nén. Nếu khác thư
mục thì cấu hình đường dẫn trỏ tới thư viện CMSIS sẽ bị sai ( tham khảo lại mục 3. Cấu hình
project) dẫn đến biên dịch project bị lỗi.

Trang 11
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com
Các bước nạp chương trình qua FLASH LOADER
DEMOSTRATOR
B1 : chuyển ARM qua chế độ nạp qua các J4 và SW1(2)
B2 : Chạy chương trình nạp FLASH LOADER DEMOSTRATOR và thiết lập thông số như
trong hình

Bấm chọn Next


NẾU HIỆN RA THÔNG BÁO NHƯ SAU

Chú ý làm các bước như sau :


1. Rút nguồn cấp ra khỏi boad chờ sau 5s rùi cấp nguồn lại
2. Kiểm tra lại cáp COM

Trang 12
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com
3. Kiếm tra lại JMP thiết lập ARM mode nạp đã đúng chưa ?
Nếu như bạn đã làm như các bước trên mà vẫn hiện ra thông báo đó thì có thể ARM của
bạn không vào được bootloarder hoặc ARM bạn đã fuse “WRITE PROTECT : ENABLE”

B2 : Nếu chương trình nhận ra bootloader từ ARM , lúc đó chương hiện ra thông báo như sau :

Bạn bấm vào button “Next”

Hoặc thông báo

Trang 13
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Khi đó bạn bấm vào button “Remove protection” Chờ cho chương trình xóa xong bạn Nhấn
“Close “ bạn chạy lại chương trình và làm lại như Bước 1

B3 : Khi bạn gặp thông báo

Trang 14
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Bạn bấm “Next”

B4 : Bạn thiết lập thông số như trong hình dưới

Trang 15
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Bạn chọn file nạp bằng cách bấm vào nút “…”

Bạn tiếp tục click chọn “File of type”

Trang 16
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Chọn “Hex File (*.hex)”


Khi đó bạn trỏ tới file hex mà bạn muốn nạp cho ARM
Xong bạn bấm button “Open”

Và khi đó chương trình sẽ ra trở lại màn hình như sau

Nếu bạn muốn chương trình kiểm tra lại nội dung file nạp có đúng với nội dung của ARM hay
không bạn click chọn “Verify after download”

B4: Bạn tiếp tục bấm “Next”


Và đây là chương trình như hình sau

Trang 17
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Khi nạp xong chương trình thông báo :

Trang 18
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Bạn chọn “Close” để đóng chương trình

B5: thiết lập lại Mode ARM để chạy chương trình trong ARM

Bạn muốn khóa chương trình thì sao ?


Bạn thực hiện lại từ bước B1 tới B4 như lúc nạp chương trình : bạn thiết lập thông số như hình
dưới

Trang 19
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Và bấm chọn “Next”

Chọn “Yes”

Chương trình đang thực hiện mode “READ PROTECTION”

Trang 20
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Khi thực hiện xong chương trình thông báo

Trang 21
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Bạn chọn “Close” để đóng chương trình và thiết lập lại Mode ARM để chạy chương trình trong
ARM

Lưu ý : Tuyệt đối không chọn Mode “Enable : WRITE PROTECTION” khi chọn mode này ARM
sẽ vĩnh viễn không nạp được qua chương trình FLASH LOADER DEMOSTRATOR nữa .

Trang 22
J1
BATTERY PC13 U1 VCC-3.3
OSC32_IN 1 2 OSC32_OUT 32 36 PB15
OSC_IN 3 4 OSC_OUT VCC-3.3 48 VDD1 PB15/SPI_MOSI/TIM1_CH3N 35 PB14
RESET 5 6 DB0 C1 C2 C3 C4 C5 64 VDD2 PB14/SPI2_MISO/USART3_RTS/TIM1_CH2N 34 PB13 U2
DB1 7 8 DB2 104 104 104 104 104 19 VDD3 PB13/SPI2_SCK/USART3_CTS/TIM1_CH1N 33 PB12 D1
DB3 9 10 VDD4 PB12/SPI2_NSS/I2C2_SMBAL/UART3_CK/TIM1_BKIN 30 PB11
11 12 PA0 31 PB11/I2C2_SDA/USART3_RX 29 PB10 1N4148
VCC-3.3 PA1 13 14 PA2 47 VSS1 PB10/I2C2_SCL/USART3_TX 62 PB9 VCC-3.3 SPEAKER

Trang 23
15 16 63 VSS2 PB9/TIM4_CH4 61 PB8 J9
18 VSS3 PB8/TIM4-CH3 59 PB7
VSS4 PB7/ISC1_SDA_TIM4_CH2 58 PB6 R1
PB6/I2C1_SCL/TIM4_CH1

2
R11

1
2
12 57 PB5 10K
13 VSSA PB5/I2C1_SMBA 56 PB4 JNTRST PB0 3 Q1
J2 VCC-3.3
PA3 VDDA PB4/JTRST 55 PB3 JTDO Q C828
1 2 PA4 VCC-3.3 BATTERY PB3/JTDO J4
J3 1 28 PB2 BOOT1
PA5 3 4 PA6 VBAT PB2/BOOT1 27 PB1 1K

1
5 6 PB1/ADC9/TIM3_CH3
1
2
3

PA7 DB4 RESET 7 26 PB0 3


DB5 7 8 PB0 NRST PB0/ADC8/TIM3_CH3 2
PB1 9 10 BOOT1 BOOT0 60 1 VCC-3.3
11 12 BOOT0
1

PB10 PB11 8 DB0


13 14 PC0/ADC10

3
BT1 9 DB1
15 16 VCC-3.3 PC1/ADC11 DB2
10 BOOT 1 R12
3V LI BATTERY PA0 14 PC2/ADC12 11 DB3
PA1 15 PA0-WKUP/USART2_CTS/ADC0/TIM2_CH1_ETR PC3/ADC13 24 DB4 PA0 2 10K
2

PA2 16 PA1/USART2_RST/ADC1/TIM2_CH2 PC4/ADC14 25 DB5


J5
PB12 PB13 PA3 17 PA2/USART2_TX/ADC2/TIM2_CH3 PC5/ADC15 37 DB6 C10
PB14 1 2 PB15 PA4 20 PA3/USART2_RX/ADC3/TIM2-CH4 PC6 38 DB7 104
DB6 3 4 DB7 PA5 21 PA4/SPI1_NSS/UART2_CK/ADC4 PC7 39 PC8

1
PC8 5 6 PC9 PA6 22 PA5/SPI1_SCK/ADC5 PC8 40 PC9
PA8 7 8 PA9 VCC-3.3 PA7 23 PA6/SPI1_MISO/ADC6/TIM3_CH1 PC9 51 PC10
PA10 9 10 PA11 PA8 41 PA7/SPI_MOSI/ADC7/TIM3_CH2 PC10 52 PC11
PA12 11 12 PA13 PA9 42 PA8/USART1_CK/TIM1_CH1/MC0 PC11 53 PC12
13 14 R18 PA10 43 PA9/USART1_TX/TIM1_CH2 PC12 2 PC13
15 16 VCC-3.3 PA11 PA10/USART1_RX/TIM1_CH3 PC13/ANTI_TAMP OSC32_IN
10K USB_DP 44 3
USB_DM PA12 45 PA11/USART1_CTS/CANRX/USBDM/TIM1_CH4 PC14/OSC32_IN 4 OSC32_OUT
RESET PA13 JTMS46 PA12/USART1_RTS/CANTX/USBDP/TIM1_ETR PC15/OSC32_OUT
S1 PA14 JTCK49 PA13/JTMS-SWDAT
J6
PA14 PA15 RESET PA15 JTDI 50 PA14/JTCK-SWCLK
PC10 1 2 PC11 C13 PA15/JTDI 5 OSC_IN R2 1M
Nguyên lý mạch

PC12 3 4 PD2 104 PD0/OSC_IN 6 OSC_OUT Y1


PB3 5 6 PB4 PD1/OSC_OUT 54 PD2
PB5 7 8 PB6 PD2/TIM3-ETR
Y2
PB7 9 10 BOOT0 8Mhz
PB8 11 12 PB9
13 14 STN32F103RBT6 32.768
15 16 VCC-3.3
C6 C7 C8 C9
VCC-3.3 D4 VCC-3.3 D7 VCC-3.3 D5 12PF 12PF 22PF 22PF
LED R20 LED R31 LED R28
R6 R7 R8 R9 R10 R19 500 R30 500 R27 500
10K 10K 10K 10K 10K 10K 10K 10K
VCC-3.3
PA1 PA3 PA2
S2 S4 S3 D3 LED R17 1K
JP1
2 1 JNTRST D2 LED R16 1K
4 3 JTDI VCC-3.3
6 5 JTMS J10
8 7 JTCK U3

16
10 9 9
12 11 JTDO 8

VC C
14 13 R13 RESET 7 8 9 PA10
16 15 R14 VCC-3.3 6 R2IN R2OUT PA9
7 10
18 17 R15 R3 R4 R5 5 T2OUT T2IN
20 19 10K 10K 10K 10K 10K 4
10K 3
JTAG
VCC-3.3 VCC-3.3 2 C14 104 1
1 3 C1+ 11
J8
9 DB9 4 C1- T1IN 12 VCC-3.3
R21 1 DAT2 C15 104 5 C2+ R1OUT 13
NSS C2- R1IN
Q3 R22 10K PA4 2
MOSI T1OUT
14
10K PA7 3 C16 104 2 C11 C12

GN D
GND VCC-3.3 V+
1
R23 1K PA5 4 6
Email : phucthinhel@yahoo.com

Q A1015 SW1
3 USB_EN PA6 5 VCC V- 104 104
R24 1.5K BOOT0 1 4 6 SCK C17 104
J11 2 3 GND

15
7 MAX3232/SO
R25 22 8 MISO

2
4 USB_DP DAT1
3 USB_DM SD CARD SOCKET
2 R26 22 USB_5V
1
USB
TP1 TP2
Phone : 0909596937

+5V +3.3v
Fukusei Electronics

1
J11 R29
USB_5V +5V U4 AE1117-3.3V VCC-3.3
3 3 2
2 V_in V_out
J7 U5 1
RCA JACK D8 LM7805 / TO220

GND
1 1 3 C21 500
IN OUT 104 C18 D6
+

GN D
4007 + C22 + C23 J12 + C19 10UF C20
100uF 100uF C24 10UF 104 PWLED

1
104 1
2

2
TP3
OUT 5V 1
GND
Title Fukusei Electronic Co.,Ltd
Size Document Number Rev
Custom1/1 V1.1
Date: Sunday , Nov ember 28, 2010 Sheet 1 of 1
Fukusei Electronics
Phone : 0909596937
Email : phucthinhel@yahoo.com

Nếu bạn có thắc mắc về cách nạp chương trình bạn


có thể liên hệ số 0909596937 hoặc email:
phucthinhel@yahoo.com hoặc
t2l_product@yahoo.com

Trang 24

You might also like