- ST-LINK V2
- STM32CubeMX
- Vật liệu thiết yếu
- Sơ đồ mạch và kết nối
- Tạo và ghi chương trình vào STM32 bằng Keil uVision và ST-Link
- Đầu ra của Bảng STM32 được lập trình Keil
- Chương trình
Bộ vi điều khiển STM32 sử dụng kiến trúc ARM Cortex M hiện đang trở nên phổ biến và được sử dụng trong nhiều ứng dụng vì tính năng, giá thành và hiệu suất của nó. Chúng tôi đã lập trình STM32F103C8 bằng Arduino IDE trong các hướng dẫn trước của chúng tôi. Lập trình STM32 với Arduino IDE rất đơn giản, vì có rất nhiều thư viện có sẵn cho các cảm biến khác nhau để thực hiện bất kỳ tác vụ nào, chúng ta chỉ cần thêm các thư viện đó vào chương trình. Đây là một thủ tục dễ dàng và bạn có thể không tìm hiểu sâu về bộ vi xử lý ARM. Vì vậy, bây giờ chúng ta đang đi vào cấp độ lập trình tiếp theo được gọi là lập trình ARM. Bằng cách này, chúng ta có thể, không chỉ cải thiện cấu trúc của mã mà còn có thể tiết kiệm dung lượng bộ nhớ bằng cách không sử dụng các thư viện không cần thiết.
STMicroelectronics đã giới thiệu một công cụ gọi là STM32Cube MX, tạo mã cơ bản theo thiết bị ngoại vi và bảng STM32 đã chọn. Vì vậy, chúng ta không cần phải lo lắng về việc viết mã cho các trình điều khiển và thiết bị ngoại vi cơ bản. Hơn nữa, mã được tạo này có thể được sử dụng trong Keil uVision để chỉnh sửa theo yêu cầu. Và cuối cùng mã được ghi vào STM32 bằng lập trình ST-Link từ STMicroelectronics.
Trong hướng dẫn này, chúng ta sẽ học cách lập trình STM32F103C8 bằng Keil uVision & STM32CubeMX bằng cách thực hiện một dự án đơn giản về giao diện nút nhấn và đèn LED với bảng STM32F103C8 Blue Pill. Chúng tôi sẽ tạo mã bằng STM32Cube MX sau đó chỉnh sửa và tải mã lên STM32F103C8 bằng Keil uVision. Trước khi đi vào chi tiết, trước tiên chúng ta sẽ tìm hiểu về bộ lập trình ST-LINK và công cụ phần mềm STM32CubeMX.
ST-LINK V2
Các ST-LINK / V2 là một trình gỡ lỗi trong mạch và lập trình cho các họ vi điều khiển STM8 và STM32. Chúng tôi có thể tải mã lên STM32F103C8 và các vi điều khiển STM8 & STM32 khác bằng cách sử dụng ST-LINK này. Mô-đun giao diện dây đơn (SWIM) và JTAG / giao diện gỡ lỗi dây nối tiếp (SWD) được sử dụng để giao tiếp với bất kỳ vi điều khiển STM8 hoặc STM32 nào nằm trên bo mạch ứng dụng. Vì các ứng dụng STM32 sử dụng giao diện tốc độ đầy đủ USB để giao tiếp với các môi trường phát triển tích hợp Atollic, IAR, Keil hoặc TASKING, vì vậy chúng ta có thể sử dụng phần cứng này để lập trình vi điều khiển STM 8 & STM32.
Trên đây là hình ảnh dongle ST-LINK V2 của STMicroelectronics hỗ trợ toàn bộ giao diện gỡ lỗi STM32 SWD, giao diện 4 dây đơn giản (bao gồm cả nguồn), nhanh chóng và ổn định. Nó có sẵn trong nhiều màu sắc. Thân máy được làm bằng hợp kim nhôm. Nó có chỉ báo LED màu xanh lam vì nó được sử dụng để quan sát trạng thái làm việc của ST-LINK. Tên pin được đánh dấu rõ ràng trên vỏ như chúng ta có thể thấy trong hình trên. Nó có thể được giao tiếp với phần mềm Keil, nơi chương trình có thể được chiếu vào vi điều khiển STM32. Vì vậy, chúng ta hãy xem trong hướng dẫn này cách lập trình ST-LINK này có thể được sử dụng để lập trình vi điều khiển STM32. Hình ảnh bên dưới cho thấy các chân của mô-đun ST-LINK V2.
Lưu ý: Khi kết nối ST-Link với máy tính lần đầu tiên, chúng tôi cần cài đặt trình điều khiển thiết bị. Trình điều khiển thiết bị có thể được tìm thấy trong liên kết này tùy theo hệ điều hành của bạn.
STM32CubeMX
Công cụ STM32CubeMX là một phần của STMicroelectronics STMCube. Công cụ phần mềm này giúp việc phát triển dễ dàng bằng cách giảm nỗ lực phát triển, thời gian và chi phí. STM32Cube bao gồm STM32CubeMX là một công cụ cấu hình phần mềm đồ họa cho phép tạo mã khởi tạo C bằng các trình hướng dẫn đồ họa. Mã đó có thể được sử dụng trong các môi trường phát triển khác nhau như keil uVision, GCC, IAR, v.v. Bạn có thể tải xuống công cụ này từ liên kết sau.
STM32CubeMX có các tính năng sau
- Ghim trình giải quyết xung đột
- Trình trợ giúp cài đặt cây đồng hồ
- Máy tính tiêu thụ điện năng
- Một tiện ích thực hiện cấu hình ngoại vi MCU như chân GPIO, USART, v.v.
- Một tiện ích thực hiện cấu hình ngoại vi MCU cho các ngăn xếp phần mềm trung gian như USB, TCP / IP, v.v.
Vật liệu thiết yếu
Phần cứng
- Bảng STM32F103C8 Blue Pill
- ST-LINK V2
- Nút ấn
- Đèn LED
- Breadboard
- Dây nhảy
Phần mềm
- Công cụ tạo mã STM32CubeMX (Liên kết)
- Keil uVision 5 (liên kết)
- Trình điều khiển cho ST-Link V2 (liên kết)
Sơ đồ mạch và kết nối
Dưới đây là sơ đồ mạch để kết nối đơn giản một đèn LED với bảng STM32 bằng cách sử dụng một nút nhấn.
Kết nối giữa ST-LINK V2 & STM32F103C8
Ở đây, bảng STM32 Blue Pill được cấp nguồn từ ST-LINK được kết nối với cổng USB của máy tính. Vì vậy, chúng ta không cần cấp nguồn riêng cho STM32. Bảng dưới đây cho thấy mối liên hệ giữa ST-Link và bảng điều khiển thuốc Blue.
STM32F103C8 |
ST-Liên kết V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3,3V |
Đèn LED & Nút nhấn
Đèn LED được sử dụng để chỉ ra đầu ra từ bảng Blue Pill khi nhấn nút nhấn. Cực dương của đèn LED được kết nối với chân PC13 của bảng Blue Pill và cực âm được nối đất.
Một nút nhấn được kết nối để cung cấp đầu vào cho chân PA1 của bảng Blue Pill. Chúng ta cũng phải sử dụng một điện trở kéo lên có giá trị 10k vì chân cắm có thể nổi mà không có bất kỳ đầu vào nào khi thả nút. Một đầu của nút nhấn được nối với đất và đầu kia với chân PA1 & một điện trở kéo lên 10k cũng được kết nối với 3.3V của bảng Blue Pill.
Tạo và ghi chương trình vào STM32 bằng Keil uVision và ST-Link
Bước 1: - Đầu tiên cài đặt tất cả các trình điều khiển thiết bị cho ST-LINK V2, công cụ phần mềm STM32Cube MX & Keil uVision và cài đặt các gói cần thiết cho STM32F103C8.
Bước 2: - Bước thứ hai là Mở >> STM32Cube MX
Bước 3: - Sau đó nhấp vào Dự án mới
Bước 4: - Sau đó tìm kiếm và chọn bộ vi điều khiển STM32F103C8 của chúng tôi
Bước 5: - Bây giờ bản phác thảo pin-out của STM32F103C8 xuất hiện, ở đây chúng ta có thể thiết lập các cấu hình pin. Chúng tôi cũng có thể chọn các chân của chúng tôi trong phần thiết bị ngoại vi theo dự án của chúng tôi.
Bước 6: - Bạn cũng có thể bấm trực tiếp vào mã pin và một danh sách hiện ra, bây giờ hãy chọn cấu hình mã pin cần thiết.
Bước 7: - Đối với dự án của chúng tôi, chúng tôi đã chọn PA1 làm GPIO INPUT, PC13 làm GPIO OUTPUT & SYS debug làm SERIAL WIRE, ở đây chỉ chúng tôi kết nối các chân ST-LINK SWCLK & SWDIO. Các chân đã chọn & đã định cấu hình xuất hiện với màu XANH LÁ. Bạn có thể lưu ý rằng trong hình ảnh dưới đây.
Bước 8: - Tiếp theo trong tab Cấu hình , chọn GPIO để thiết lập cấu hình chân GPIO cho các chân mà chúng ta đã chọn.
Bước 9: - Tiếp theo trong ô cấu hình chân này chúng ta có thể cấu hình User Label cho các chân mà chúng ta đang sử dụng, đó là tên pin do người dùng định nghĩa.
Bước 10: - Sau đó click vào Project >> Generate Code .
Bước 11: - Lúc này hộp thoại cài đặt dự án xuất hiện. Trong hộp này, chọn tên và vị trí dự án của bạn và chọn môi trường phát triển. Chúng tôi đang sử dụng Keil, vì vậy hãy chọn MDK-ARMv5 làm IDE.
Bước 12: - Tiếp theo trong thẻ Code Generator , chọn Copy only những file thư viện cần thiết rồi nhấn OK.
Bước 13: - Lúc này hộp thoại tạo mã xuất hiện. Chọn Mở Dự án để mở dự án tự động mã được tạo trong uvsion Keil.
Bước 14: - Bây giờ công cụ Keil uVision mở ra với mã được tạo của chúng tôi trong STM32CubeMx có cùng tên dự án với thư viện và mã cần thiết được cấu hình cho các chân mà chúng tôi đã chọn.
Bước 15: - Bây giờ chúng ta chỉ cần đưa vào logic để thực hiện một số hành động ở đèn LED đầu ra (chân PC13) khi nút được nhấn và thả ở đầu vào GPIO (chân PA1). Vì vậy, hãy chọn chương trình main.c của chúng tôi để bao gồm một số mã.
Bước 16: - Bây giờ thêm đoạn mã vào vòng lặp while (1) , xem hình bên dưới mình đã bôi đen phần đó để chạy mã liên tục.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Nút DETECTS được nhấn {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Để làm cho đầu ra cao khi nhấn nútd} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Để đặt đầu ra Thấp khi nhấn nút}}
Bước 17: - Sau khi hoàn tất việc chỉnh sửa mã, nhấp vào biểu tượng Tùy chọn cho mục tiêu dưới tab gỡ lỗi, chọn ST-LINK Debugger
Ngoài ra, hãy nhấp vào nút Cài đặt và sau đó trong tab Tải xuống Flash, đánh dấu vào hộp kiểm Đặt lại và Chạy và nhấp vào 'ok'.
Bước 18: - Bây giờ nhấp vào biểu tượng Xây dựng lại để xây dựng lại tất cả các tệp mục tiêu.
Bước 19: - Bây giờ bạn có thể cắm ST-LINK vào máy tính với các kết nối mạch đã sẵn sàng và nhấp vào biểu tượng DOWNLOAD hoặc nhấn F8 để flash STM32F103C8 với mã bạn đã tạo và chỉnh sửa.
Bước 20: - Bạn có thể nhận thấy chỉ báo nhấp nháy ở cuối cửa sổ uVision keil.
Đầu ra của Bảng STM32 được lập trình Keil
Bây giờ khi chúng ta nhấn nút nhấn, đèn LED sẽ Bật và khi chúng ta nhả nó ra, đèn LED sẽ Tắt.
Chương trình
Phần chính mà chúng tôi đã thêm vào chương trình đã tạo được hiển thị bên dưới. Mã bên dưới này cần được đưa vào while (1 ) của chương trình main.c do STM32CubeMX tạo ra. Bạn có thể quay lại Bước 15 đến bước 17 để tìm hiểu cách thêm nó vào chương trình main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Nút DETECTS được nhấn {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Để làm cho đầu ra cao khi nhấn nútd} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Để đặt đầu ra Thấp khi nhấn nút}}
Toàn bộ quá trình tạo và tải dự án lên bảng STM32 cũng được giải thích trong Video ở cuối. Ngoài ra, mã hoàn chỉnh của tệp main.c được cung cấp bên dưới bao gồm mã đã cho ở trên.
Hơn nữa, bạn có thể tìm thấy bộ dự án STM32 hoàn chỉnh của chúng tôi tại đây.