BÀI 01 : HƯỚNG DẪN TẠO PROJETC STM32 VỚI KEIL V5.
- Những phần mềm cần thiết cần cài đặt:
- Đã cài Keil V5 trên máy tính và crack.
- Đã cài đặt đầy đủ thư viện chuẩn họ MCU sử dụng.
- Đã cài đặt driver cho stlink(Nếu sử dụng stlink).
- Đã tải datasheet liên quan của MCU sử dụng.
- Tạo thư mục tên GPIO(tên này tùy ý) và 2 thư mục con trong thư mục GPIO với tên như sau :
- Lib: chứa thư viện chuẩn của nhà sản xuất.
- Project: chứa file viết code, ngắt và các file tạo ra khi chạy chương trình. Tạo thư mục con keil trong thư mục project(thư mục này sẽ chứa các file sinh ra khi biên dịch chương trình).
- Copy các file cần thiết vào trong thư mục GPIO:
- Copy 2 thư mục CMSIS và STM32F10x_StdPeriph_Driver trong đường dẫn STM32F10x_StdPeriph_Lib_V3.5.0\Libraries trong file STM32F10x_StdPeriph_Lib_V3.5.0 vào thư mục lib. File này mình đã đính kèm ở dưới.
- Copy các file main, stm32f10x_conf, stm32f10x_it.c, stm32f10x_it.h, system_stm32f10x vào thư mục project với đường dẫn là STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template trong file STM32F10x_StdPeriph_Lib_V3.5.0.
- Khởi động keil c lên để bắt đầu tạo project mới
- Chọn Project -> New Uvision project. Trỏ đến thư mục keil trong thư mục GPIO vừa tạo đặt tên project là GPIO(tên này tùy ý) -> bấm Save.
- Cửa sổ mới được mở ra để cho chúng ta chọn chip. ở đây mình sử dụng stm32f103c8t6 nên sẽ chọn MCU là STM32F103C8 ->nhấn OK.
- Mở cửa sổ manage project items bằng cách kích vào biểu tượng hoặc vào đường dẫn sau : project -> manage -> project items. Chỉnh sửa tên projects target và groups bằng tên tùy ý hoặc như trong hình. Add các file đã copy ở lúc đầu vào các groups. Chú ý là lib chứa các file thư viện và user chứa các file chương trình.
- Groups lib chứa các file: core_cm3.c;misc.c;stm32f10x_gpio.c;stm32f10x_rcc.c; startup_stm3210x_md.s.
- File core_cm3.c nằm trong đường dẫn GPIO\lib\CMSIS\CM3\CoreSupport.
- File startup_stm3210x_md.s nằm trong đường dẫn GPIO\lib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm và lưu ý là đuôi md.s hay hd.s tùy thuộc vào loại MCU mà ta sử dụng. Đuôi file này là đuôi .s nên files of type phải để là all files.
- File misc.c;stm32f10x_gpio.c;stm32f10x_rcc.c nằm trong thư mục GPIO\lib\STM32F10x_StdPeriph_Driver\src. Nếu sử dụng UART hay ADC… thì cần phải add thêm các thư viện đó cũng nằm trong thư mục này.
- Groups user chứa các file sau: main.c;stm32f10x_it.c; system_stm32f10x.c.
- Vào tab options for target bằng cách click vào biểu tượng hoặc đường dẫn sau project -> Options for target. Chỉnh sửa các tab theo các bước sau:
- ở tab options : trong thẻ Device kiểm tra MCU đã chọn là đúng loại MCU mình sẽ sử dụng hay chưa.
- ở tab target click vào ô Use microLIB.
- ở tab C/C++ thêm dòng chữ và add các link giống như hình.
- ở tab debug chọn st-link debug nếu bạn sử dụng mạch nạp st-link, chọn các ô tương ứng nếu dùng debug.
- ở tab Utilities click setting.
- Mở file main lên và xóa hết nội dung, chỉ chừa lại nội dung như trong hình.
- Kích vào biểu tượng build nếu build ở lần đầu tiên và rebuild(phím tắt là F7) cho các lần tiếp theo. Xem kết bảng thông báo build output nếu không xuất hiện 0 lỗi tức là đã thành công.
Các phần mềm này mình đã để link ở dưới.
Cửa sổ manage run hiện ra. Chọn OK để kết thúc.
LƯU Ý:
LƯU Ý: các file này đã được copy và nằm trong đường dẫn: GPIO\project
LƯU Ý: hàng chữ STM32F10X_MD tùy thuộc vào dòng STM32 sử dụng, tùy thuộc vào bộ nhớ mà có các kí hiệu LD, MD, HD… khác nhau. Các bạn có thể tìm hiểu trong reference manual trang 158 trong phần GPIO.
Thẻ flash download chọn reset and run.
Thẻ debug chọn Port : SW và thấy đã nhận stlink (ở đây mình sử dụng mạch nạp stlink V2).
Khi nạp code thì bạn chỉ cần nhấn vào biểu tượng Load hoặc vào Flash->Load Phím tắt là F8. Chúc các bạn thành công.
Thư viện, phần mềm, datasheet các bạn có thể tự download trên trang chủ chủ nhà sản xuất, tuy nhiên mình đã tổng hợp tất cả những gì mình đang sử dụng và để link ở dưới.
#include "core_cm3.h"
ReplyDelete..\stm32f10x_it.c: 0 warnings, 1 error
compiling main.c...
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.2.0\Device\Include\stm32f10x.h(483): error: #5: cannot open source input file "core_cm3.h": No such file or directory
#include "core_cm3.h"
..\main.c: 0 warnings, 1 error
compiling system_stm32f10x.c...
C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.2.0\Device\Include\stm32f10x.h(483): error: #5: cannot open source input file "core_cm3.h": No such file or directory
#include "core_cm3.h"
..\system_stm32f10x.c: 0 warnings, 1 error
".\Objects\nhay_led.axf" - 3 Error(s), 0 Warning(s).
cho e hoi loi do sua the nao a
bạn thử kiếm tra trong đường dẫn ...CMSIS\CM3\CoreSupport đã có file có core_cm3.h và core_cm3.c hay chưa. Nếu có rồi thì kiểm tra đã thêm đường dẫn đến file core_cm3.h trong mục Options of Target -> C/C++ có hay chưa . Nếu chưa được bạn có thể upload file project của bạn mình kiểm tra cho.
DeleteAnh ơi, em cũng bị lỗi này, chưa fix được, anh có thể giúp em không ?
DeleteBạn có thể up lại ảnh được không ạ? Tại ảnh khá là mờ, mình nhìn không rõ được mặc dù zoom lên rồi =) Cám ơn bạn
ReplyDeleteChào bạn : đây là file gốc nhé. Bạn có thể tham khảo thêm :https://drive.google.com/file/d/1RI9FCa9FGI_mJ4pQVABsFfdaBGVGGvCb/view?usp=sharing
Deleteem chào anh, em mới bắt đầu học dòng này, em muốn hỏi là các lệnh và hmaf mình đọc xem ở đâu để biết ý nghĩa của lệnh vậy ạ, ví dụ như GPIO_WriteBit(GPIOB,GPIO_Pin_9,(BitAction)(1^GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)));
ReplyDeleteđảo bit á,ví dụ đọc về giá trị 0 thì ghi ra giá trị 1
Delete