TUTORIAL TUT ORIAL 01 – CREAT A PROJE PROJECT CT WITH KEIL C MDK MDK ARM ARM - HIEN HIENCLUBV CLUBVN N
NG NG H Ư Ớ
DẪ N T Ạ PROJECT Keil Keil uVision4 uVision4 MDK ARM Ạ O 1 PROJECT
Lời đầu tiên muố n nói vớ i các bạn, là tôi ko có board ARM để học, vớ i lại ấ t khá xem các project mẫ u thấ y có nhiề u kiể u lậ p Project r ấ khácc nha nhau u cũng khó tiế p cận. Nên mu muố n làm 1 Tutorial theo ý hi ể u của mình. mình. Vì là Beginee Begineerr nên cũng r ấ ấ t t ng. Hôm nay chán quá, ko ng ủ đượ c nên ng ồi viết hướ ng ng d ẫ khó tưởng tượ ng. ẫn hi vọng chúng ta cùng b ắt đầu vớ i STM32 thật là đơn giả n nhấ t. t.
Bài viết đượ c tham khảo t ừ nhiều code mẫu khác nhau, nên kiến th ức s ẽ ko được đầy đủ và hoàn thiện. Có gì còn sai sót mong các b ạn góp ý và thông cảm. Bây giờ chúng ta bắt đầu. Let’s Go ! 1. Khởi ộ ng Keil uVision4 và tạ o Project mới …
- Ở ví dụ này chúng ta t ạo 1 Folder mớ i là Demo và lưu tên Project là Demo
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
Hiện cửa sổ chọn Chip. Ở đây m ình chọn STMicrolectronics. Trong ví dụ này chọn chip STM32F103RC.
bộ nhớ Flash và - Chúng ta để ý từ RD đến RG chỉ khác nhau về số lượng SRAM thôi, code của con này hoàn toàn dùng đượ c cho con khác. OK
- Chọn No. Vì ko cần thiết, mình sẽ Add File Startup ở phần sau.
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
- Nhìn Project mớ i tạo sẽ có như thế này. Target 1, chúng ta sẽ sửa và làm theo ý của mình. - Nhấp chuột theo hình mũi tên , đ ể tạo và chỉnh Target.
- Nhấn theo ô vuông tròn để tạo tên mớ i, ví dụ mình tạo như ô giữa.
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
- Đến đây, các bạn có thể nhấn OK rồi, Hoặc Có thể Add Files ở ô bên cạnh cho từng Groups, hoặc OK, rồi ra Add Files sau cũng đư ợ c. - Các Groups chưa có File, bây giờ chúng ta sẽ nhấp đúp vào tưng Group và tiế n hành add các file vào.
LƯU Ý : Các File mà chúng ta Add đề u nằm trong thư việ n : STM32F10x_StdPeriph_Driver và CMSIS của thư mục Library vớ i bộ thự viện STM32F10x_StdPeriph_Lib_V3.5.0. Để cho đơn giản việc Add File tôi đã lọc ra những File cần thiết sẽ nằm trong Project và t ạo thành 1 thư mụ c riêng STM32, các bạn sẽ COPY nó vào Thư mục Demo mà mình đã t ạo trước đó nhé. Các File trong thư mục này đề u hoàn toàn nằm trong STM32F10x StdPeriph Lib V3.5.0 hết, Cuối bài tôi sẽ nói vì sao nên lọc ra và lọc ra như thế nào. OK. Let’s Go !.
- Quay trở lại với Project : Đúp chuột vào USER và chọn các File trong đó.
- Đối vớ i DRIVER chúng ta sẽ Add những File *.c có liên quan đế n bài toán mà chúng ta sẽ dùng đến, ở ví dụ này add 3 file thông d ụng nhất. Các File Add sẽ thấy ở hình cuối.
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
Đối vớ i STRATUP chúng ta phải chọn All file mớ i nhìn thấy.
OK, bây giờ Project của mình sẽ có như thế này.
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
- Chứa tất cả các File mà chúng ta đã Add. Trong đó : USER , CMSIS và STARTUP luôn là các File như vậ y. Còn DRIVER là những thư việ n *.c mình cần dùng đến trong Project của mình. Các bài toán liên quan đến tài nguyên của Chip.
Vì sao StartUp lại chọn File có tên : startup_stm32f10x_hd.s tôi sẽ nói cho các bạn ở cuối bài. OK, bây giờ đến đoạn quan trọng nhất, đó là thiết lập Target Option cho Project, bao gồm việc khai báo Define , Folder Setup, Obj, List… OK. Let’s Go !
- Click chuột theo vị trí Mũi tên. Chúng ta s ẽ thấy được như h ình bên dướ i.
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
Chọn Select Folder for Objects…. Và t ạo 1 thư mục mớ i có tên Obj nhấn OK. File HEX sẽ nằm trong thư mụ c này. Tương tự làm vớ i Tab Listing.
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
- Trong mục C/C++ : Copy và Paste dòng trong khung vuông.
Vì sao các bạn phải COPY và PASTE cái dòng USE_STDPERIPH_DRIVER, STM32F10X_HD đó vào, tôi cũng sẽ giải thích cho các b ạn ở cuối bài viết này. - Nhấp chuột theo mũi tên Màu Xanh, đ ể cài đặt thư mục Folder Setup cho Project, ở bên dưới trong ô vuông đỏ là những thư mục mình sẽ phải Add vào. Mục đích khai báo cho biên dị ch biết đượ c Library n ằm ở đâu. Khi gọi Library bên ngoài nó sẽ chạy đến các Folder này tìm ki ếm File.
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
- OK, sau khi xong sẽ có như màn h ình bên dướ i :
- Đến đây Nhấn F7 hoặc nhấn như h ình bên dưới để Build hoặc All Buid Project của mình đã tạo.
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
- Buil thành công : 0 Error (s), 0 Warning (s). – OK. Lét Gâu.
- Các Folder tạo trong Project sẽ có.
File HEX nằm trong thư mụ c OBJ
- Thư mục STM32 mà tôi tạo sẽ có như thế này:
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
PHẦN GIẢI THÍCH TẠO THƯ MỤC CHỨ THƯ VIỆN. Phần này tôi COPY bên : STM32F10x_StdPeriph_Lib_V3.5. 0\Libraries\CMSIS\CM3\CoreSupp ort (Gồm có 2 File)
Và bên : STM32F10x_StdPeriph_Lib_V3.5. 0\Libraries\CMSIS\CM3\DeviceSu pport\ST\STM32F10x (Gồm 3 File)
- Chọn tiện mỗi lần Add Folder Setup khi tạo 1 Project mớ i.
Cái này thì COPY h ết trong thư mục này : STM32F10x_StdPeriph_Lib_V3.5. 0\Libraries\STM32F10x_StdPeriph _Driver
Chứ toàn bộ các thư viện và các hàm ở đây.
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
Thư mục : STM32F10x_StdPeriph_Lib_V3.5. 0\Libraries\CMSIS\CM3\DeviceSu pport\ST\STM32F10x\startup\arm
- Ở đây tôi xóa hết rồi. Vì mình ch ỉ dùng có mỗi File này thôi. startup_stm32f10x_hd.s
USER : là những cái mình dùng ban đầu, gồm để khai báo, và hàm main.c gọi đến các hàm khác. Các File này chúng ta th ấy trong Example của Library. Nhưng File main.c của nó sẽ làm cho các board của ST mà chúng ta hay th ấy có cái tên : STM32_EVAL. Ở đây tôi đã sửa lại, cơ bản giống bên ww.arm.vn
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
Tại sao lại là như thế này:
1. Đầu tiên là : USE_STDPERIPH_DRIVER - Nó nằm trong File : stm32f10x.h đượ c hàm main.c gọi #include "stm32f10x.h" Defined USE_STDPERIPH_DRIVER : chính là mình khai báo để
sử dụng thư
viện bên ngoài. Thư việ n STM32F10x_StdPeriph_Driver.
2. Thứ 2 : Tại sao là : STM32F10X_HD - Chúng ta đọc dòng : /* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */ - High-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 256 and 512 Kbytes. Vậy là quá rõ rồi nhé : Flash Moemory nằm trong kho ảng 256 – 512 Kb.
- Vậy là nếu chọn STM32F10X_HD thì chỉ có thể là 3 chip : RC, RD và RE nhé.
TUTORIAL 01 – CREAT A PROJECT WITH KEIL C MDK ARM - HIENCLUBVN
Thân ái. Bài viế t chỉ gói gọn trong mấ y tiếng đồng hồ , mong muố n các bạn sẽ hiể u và đỡ bỡ ngỡ , có gì chưa đúng, hoặc bổ sung thêm thì góp ý cho mình. Xin chân thành cảm ơn. Bài viết chưa ngắ m sâu và Code và hàm Main.c , cái này mình d ự định sẽ viế t trong Tút 2. Trong tút này sẽ đi từng bướ c trong việc viế t code và chỉ nh code như thế nào. Thân.
HÀ NỘI, 25/06/2013 HIECLUBVN.