CHÉM GIÓ, BÀN LUẬN VỀ KỸ THUẬT
Lập trình STM32F4 - Phần 4: Làm quen với KeilC
28 Tháng Tư 2021
Sau khi đã hiểu sơ lược về hệ thống nhúng, đến đây có lẽ bạn đang muốn có thể bắt tay ngay vào công việc lập trình nhúng sử dụng dòng chip STM32F4, vậy thì điều đầu tiên chúng ta cần bây giờ chính là tìm hiểu về môi trường dùng để tạo ra software của chúng ta – KeilC.
Sơ lược về trình biên dịch và KeilC
Ngày nay trên thị trường có khá nhiều trình biên dịch ngôn ngữ C cho các dòng vi điều khiển, IAR, Keil C … Những phần mềm này được gọi là môi trường phát triển tích hợp (IDE: viết tắt của Integrated Development Environment). Chúng đóng vai trò như là trình soạn thảo ngôn ngữ C, assembly, cũng như là trình biên dịch, hỗ trợ debug-phát hiện lỗi và sửa các câu lệnh vừa được viết ra. Ngoài ra chúng cũng hỗ trợ biên dịch những câu lệnh đã được viết ra bởi người sử dụng thành file hex qua đó nạp vào các dòng vi xử lý.
Trong đó Keil C là một phần mềm chuyên dụng để tạo ra một môi trường lập trình hỗ trợ cho nhiều dòng vi xử lý từ ARM, AVR, 8051, PIC,.. với 2 ngôn ngữ chủ yếu là C và assembly.
Bạn đọc có thể tìm các link cài đặt và hướng dẫn cài đặt trên Internet trước khi bắt đầu làm quen với giao diện của Keil C. Hiện tại có 2 version được khuyến khích sử dụng là Keil C µVision 4 và Keil C µVision 5. Thông tin chi tiết đến từ nhà phát triển phần mềm bạn xem ở đây.
Giao diện hoạt động của Keil C
Màn hình làm việc chính
Trên màn hình làm việc của Keil C có 3 vùng chính:
- Vùng 1: Vùng soạn thảo. Đây là nơi ta sẽ soạn thảo chương trình. Người sẽ dụng sẽ lập trình phần mềm tại đây
- Vùng 2: Là vị trí của các cửa sổ Project, cho phép ta quản lý các tập tin trong dự án, và cửa sổ Function, cho phép ta quản lý các chương trình con, thư viện,..
- Vùng 3: Cửa sổ Build Output. Hiển thị các thông tin trong quá trình biên dịch chương trình. Đây là nơi sẽ thể hiện các lỗi (error) và các cảnh báo (warning). Sau khi debug project nếu như không có lỗi chương trình sẽ biên dịch xong và hiện lên cửa số thông báo ở vùng 3 như ở dưới
Build chương trình
Sau khi soạn thảo chương trình xong, ta biên dịch chương trình bằng cách vào menu Project\Build target hoặc nhấn nút Build trên thanh công cụ hoặc ta cũng có thể nhấn phím F7. Nút Build được tô đậm như trong hình bên dưới. Công dụng của nút Build là biên dịch những đoạn chương trình được thay đổi xem chúng có lỗi hay không.
Ngoài nút Build ra chúng ta còn có nút Rebuild, nút Rebuild được dùng để biên dịch toàn bộ chương trình bao gồm cả thư viên được add và cả chương trình main. Tuy nhiên thời gian biên dịch của nút Rebuild thường lâu hơn Build, vị trí của nút Rebuild trên thanh công cụ debug được tô như hình bên dưới.
Sau khi chương trình tiến hành biên dịch chương trình, nếu không có lỗi xảy ra, ta sẽ nhận được thông báo 0 Error(s), 0 Warning(s) trong cửa sổ Buid Output sau khi quá trình biên dịch hoàn tất.
Trong quá trình phát triển một chương trình, sẽ có hai loại lỗi (Error) có thể xảy ra:
- Lỗi cú pháp (Syntax error): Lỗi này là các sai sót trong cấu trúc câu lệnh như thiếu tham số, sai từ khóa … Các lỗi này sẽ được trình biên dịch tự động phát hiện trong quá trình biên dịch.
- Lỗi Logic (Error): Lỗi này là các sai sót trong giải thuật chương trình, làm cho chương trình chạy không đúng ý đồ ban đầu của lập trình viên. Lỗi này chỉ có thể do chính lập trình viên phát hiện và sửa chữa. Các IDE không thể trực tiếp phát hiện các lỗi logic, nó chỉ cung cấp cho người dùng các công cụ hỗ trợ cho quá trình phát hiện và sửa chữa loại lỗi này.
Debug chương trình
Keil C ngoài việc hỗ trợ ta soạn thảo và biên dịch chương trình, nó còn hỗ trợ ta một công cụ gỡ rối (Debug) chương trình hết sức hiệu quả.
Để chạy debug một chương trình sau khi đã biên dịch thành công, ta nhấn có thể kích hoạt chức năng debug bằng một trong các cách sau:
-
Nhấn tổ hợp phím tắt Ctrl + F5.
-
Các cảnh báo warning, đây không phải là những error nên cho dù chương trình có bao nhiêu warning đi nữa vẫn sẽ hoạt động hình thường. Các warning được dùng để cảnh báo những câu lệnh có thể có lỗi tiềm ẩn, những câu lệnh không sử dụng nhưng vẫn khai báo,..
Mở menu Debug-Start/Stop Debug Session
Để mở chức năng debuger ta nhấn vào nút được khoanh vùng như hình bên dưới. Muốn tắt chức năng Debug, ta làm lại thao tác trên một lần nữa
Sau khi kích hoạt chức năng Debug, cửa sổ Keil C có dạng như hình dưới đây. Nếu có cửa sổ nào không xuất hiện, ta có thể vào menu View để bật cửa sổ đó lên
Trong cửa sổ này, có 4 vùng chính như hình bên dưới:
- Vùng 1: Cửa sổ thể hiện các thanh ghi của vi điều khiển
- Vùng 2: Cửa sổ lệnh soạn thảo, chứa chương trình đang được debug
- Vùng 3: Cửa sổ Watches cho phép ta theo dõi giá trị của các biến chứa trong chương trình. Muốn biết giá trị của biến nào, ta chọn cửa sổ này và nhấn phím F2, sau đó nhập tên của biến cần theo dõi. Lúc này, của sổ sẽ hiển thị tên biến cũng như giá trị hiện tại của biến đó.
- Vùng 4:Cửa sổ Disassembly : Cho ta biết chính xác một lệnh Keil C được viết bằng hợp ngữ như thế nào. Kích hoạt cửa sổ này bằng cách vào menu View/Disassembly.
Bên cạnh những chức năng trên Keil C còn hỗ trợ nhiều chức năng khác cho người sử dụng chẳng hạn như.
- Cửa sổ Memory Kích hoạt bằng menu View/Memory. Cho phép xem nội dung bộ nhớ chương trình và bộ nhớ dữ liệu như hình bên dưới: Muốn xem bộ nhớ chương trình bắt đầu từ một địa chỉ nào đó, ta nhập Địa chỉ vào ô Address.
- Ta cũng có thể quan sát trạng thái các Port, các Timer, ngắt bằng cách vào menu Peripherals, chọn các đối tượng cần quan sát. Như ví dụ trong hình dưới đây, các thanh ghi của GPIOA được hiển thị để ta quan sát trực tiếp giá trị khi chương trình đang chạy:
Chạy Debug:
Sau khi đã kích hoạt đầy đủ các cửa sổ cần thiết, ta bắt đầu cho chạy debug bằng cách chọn một trong các nút trên thanh công cụ Debug :
- Nút Reset: Reset chương trình về trạng thái ban đầu
- Run (F5): Thực thi chương trình
- Step (F11): Thực thi từng dòng lệnh, có nhảy vào hàm con.
- Step over (F10): thực thi từng dòng lệnh, không nhảy vào hàm con.
- Step out (Ctrl + F11): Nhảy ra khỏi hàm con
- Run to Cursor line (Ctrl + F10): Thực thi chương trình từ đầu cho đến vị trí con trỏ.
Tạm Kết
Bài viết đã khá dài và mình đã hướng dẫn sơ về keil C một công cụ mà chúng ta sẽ sử dụng trong series này. Chúc bạn đọc vui vẻ