- Chọn và tải xuống nền tảng phát triển cần thiết cho bo mạch Nucleo64
- Sơ đồ mạch và thiết lập phần cứng
- Bắt đầu với STM32CubeMX dành cho Ban phát triển STM32 Nucleo64
- Lập trình Bảng phát triển STM32 Nucleo64 sử dụng TrueSTUDIO
- Chương trình STM32 Nucleo64 để điều khiển đèn LED bằng nút nhấn
- Gỡ lỗi và tải mã lên Bảng phát triển STM32 Necleo64 bằng TrueSTUDIO
Nhiều người trong chúng ta hẳn đã quen thuộc với các bộ vi điều khiển và bảng phát triển phổ biến như Arduino, Raspberry Pi, ESP8266, NoduMCU, 8051, v.v. Trên thực tế, đối với hầu hết mọi người, Arduino sẽ là bảng phát triển đầu tiên của họ, nhưng khi chúng tôi tìm hiểu sâu và bắt đầu thiết kế chuyên nghiệp, chúng tôi sẽ sớm nhận ra những hạn chế của Arduino (như chi phí, tính linh hoạt, độ ổn định, tốc độ, v.v.) và hiểu nhu cầu chuyển sang một nền tảng Vi điều khiển nguyên bản hơn như PIC, STM, Renesas, v.v.
Chúng tôi đã trình bày một loạt các hướng dẫn về Vi điều khiển PIC, hướng dẫn người mới bắt đầu học vi điều khiển PIC. Tương tự, bắt đầu với bài viết này, chúng tôi cũng sẽ lên kế hoạch cho một chuỗi các Hướng dẫn về Bảng phát triển STM32 Nucleo64 có thể giúp những người mới bắt đầu hoàn toàn có thể học và phát triển bằng cách sử dụng Nền tảng STM32. Bảng phát triển Nucleo64 là nền tảng chi phí thấp và dễ sử dụng cho các nhà phát triển chuyên nghiệp cũng như cho những người yêu thích. Nếu bạn hoàn toàn mới sử dụng Bảng phát triển STM32 Nucleo64, hãy xem video Đánh giá Nucleo64 này để hiểu các kiến thức cơ bản về bảng này trước khi tiếp tục. Video cũng hướng dẫn cách lập trình STM32 bằng ARM Mbed Platform nhưng đối với hướng dẫn này, chúng tôi sẽ sử dụng một nền tảng miễn phí khác từ ST Microelectronics được gọi là TrueSTUDIO.
Lưu ý: Có nhiều phiên bản của Bảng phát triển STM32 Nucleo64, bảng cụ thể được sử dụng trong hướng dẫn này là NUCLEO-F030R8. Chúng tôi đã lựa chọn bảng này chủ yếu vì chi phí thấp. Ngay cả khi bạn có một phiên bản khác, hầu hết mọi thứ được thảo luận trong hướng dẫn sẽ đủ để bạn bắt đầu.
Chọn và tải xuống nền tảng phát triển cần thiết cho bo mạch Nucleo64
Bắt đầu với bất kỳ bộ vi điều khiển nào sẽ cần một IDE lập trình như chúng ta có Arduino IDE cho bảng Arduino, Atmel Studio cho vi điều khiển AVR, MP Lab cho PIC, v.v. Vì vậy, ở đây chúng ta cũng cần một IDE cho Bảng STM32 Nucleo64 để thực hiện lập trình và gỡ lỗi. Họ STM32 bao gồm các Bộ vi điều khiển 32 bit hỗ trợ các IDE và các công cụ sau:
- IAR Embedded Workbench® cho ARM® (EWARM).
- MDK-ARM Keil
- TrueSTUDIO
- Bàn làm việc hệ thống cho STM32
Ở đây đối với các hướng dẫn của chúng tôi, TrueSTUDIO sẽ được sử dụng để viết, biên dịch và gỡ lỗi mã vì nó miễn phí tải xuống và sử dụng ngay cả cho các dự án thương mại mà không cần bất kỳ yêu cầu giấy phép nào. Sau đó, STM32CubeMX sẽ được sử dụng để tạo ra các trình điều khiển ngoại vi cho các bo mạch STM32 giúp lập trình dễ dàng. Để tải chương trình của chúng tôi (tệp hex) lên bảng phát triển của chúng tôi, mọi người thường sử dụng công cụ STM32 ST-LINK Utility, nhưng thay vào đó, chúng tôi sẽ sử dụng chính TrueSTUDIO để thực hiện việc này. TrueSTUDIO có chế độ gỡ lỗi cho phép lập trình viên tải trực tiếp tệp hex lên bảng STM32. Cả TrueSTUIO và STM32CubeMX đều dễ dàng tải xuống, chỉ cần nhấp vào liên kết bên dưới, đăng ký và tải xuống thiết lập. Sau đó cài đặt chúng trên máy tính xách tay của bạn.
- Tải xuống STM32Cube MX
- Tải xuống TrueSTUDIO
Sơ đồ mạch và thiết lập phần cứng
Trước khi tiến hành phần phần mềm và viết mã, chúng ta hãy chuẩn bị hội đồng quản trị cho dự án này. Như đã đề cập trước đó trong bài viết này, chúng ta sẽ điều khiển đèn LED bằng nút nhấn. Bây giờ, nếu bạn đã xem video được liên kết ở trên, bạn nên biết rằng Bảng phát triển STM32 của bạn có hai bộ chân kết nối ở hai bên được gọi là chân ST Morpho. Chúng tôi đã kết nối một nút nhấn và một đèn LED vào các chân này như thể hiện trong sơ đồ mạch bên dưới.
Kết nối mạch rất dễ dàng cho dự án này, chúng tôi cần kết nối đèn LED ở PA5 của PORTA và công tắc ở PC13 của PORTC đối với GND. Sau khi kết nối được thực hiện, thiết lập thử nghiệm của tôi trông như thế này.
Ngoài ra, chúng ta cũng có thể sử dụng đèn LED và nút nhấn có sẵn trên bảng. Các đèn LED và nút nhấn sẵn có này cũng được kết nối tại cùng một chân như trong sơ đồ mạch. Chúng tôi đã thêm các thành phần bên ngoài chỉ để thực hành. Sơ đồ chân bên dưới của Bảng phát triển STM32 sẽ rất hữu ích để biết vị trí của mỗi chân hình thái được kết nối với bo mạch.
Bắt đầu với STM32CubeMX dành cho Ban phát triển STM32 Nucleo64
Bước 1: Sau khi cài đặt, khởi chạy STM32CubeMX, sau đó chọn bộ chọn bảng truy cập để chọn bảng STM32.
Bước 2: Bây giờ tìm kiếm bảng theo tên bảng STM32 của bạn như NUCLEO-F030R8 và nhấp vào bảng hiển thị trong hình. Nếu bạn có một bảng khác, hãy tìm kiếm tên tương ứng của nó. Phần mềm sẽ hỗ trợ tất cả các bo mạch phát triển STM32 từ ST Microelectronics.
Bước 3: Bây giờ bấm vào có như trong hình dưới đây, để khởi tạo tất cả các thiết bị ngoại vi ở chế độ mặc định của chúng. Sau đó, chúng tôi có thể thay đổi những cái bắt buộc theo yêu cầu của dự án.
Sau khi nhấp vào 'Có', màn hình sẽ tương tự như hình bên dưới và ghim màu xanh lục cho biết rằng chúng được khởi tạo theo mặc định.
Bước 4: Bây giờ người dùng có thể chọn cài đặt mong muốn từ các danh mục. Ở đây trong hướng dẫn này, chúng ta sẽ chuyển đổi một đèn LED bằng cách sử dụng một nút nhấn. Vì vậy, chúng ta cần tạo chân LED làm đầu ra và chân chuyển mạch làm INPUT.
Bạn có thể chọn bất kỳ chân nào, nhưng tôi đang chọn PA5 và thay đổi trạng thái của nó thành GPIO_Output để làm cho nó hoạt động như một chân đầu ra như trong hình dưới đây.
Tương tự, tôi đang chọn PC13 làm GPIO_Input để tôi có thể đọc trạng thái của nút nhấn.
Ngoài ra, chúng ta cũng có thể cấu hình các chân từ tab sơ đồ chân và tab cấu hình như được hiển thị bên dưới.
Bước 5: Bước tiếp theo, người dùng có thể cài đặt tần số mong muốn cho vi điều khiển và các chân theo bộ dao động bên ngoài và bên trong. Theo mặc định, bộ dao động tinh thể 8 MHz bên trong được chọn và bằng cách sử dụng PLL, bộ dao động 8 này được chuyển đổi thành 48 MHz. Có nghĩa là theo mặc định board STM32 hoặc vi điều khiển và các Pins sẽ hoạt động trên 48MHz.
Bước 6: Bây giờ di chuyển trong trình quản lý dự án và đặt tên cho dự án, vị trí dự án của bạn và chọn chuỗi công cụ hoặc IDE. Ở đây chúng tôi đang sử dụng TrueSTUDIO, vì vậy tôi đã chọn giống như hình dưới đây.
Bước 7: Bây giờ bạn bấm vào Dấu Tạo Mã bằng dấu tròn màu đỏ ở hình bên dưới.
Bước 8: Bây giờ bạn sẽ thấy một cửa sổ bật lên như đã cho, sau đó nhấp vào mở dự án. Tuy nhiên, hãy đảm bảo rằng bạn đã cài đặt TrueSTUDIO trước bước này.
Lập trình Bảng phát triển STM32 Nucleo64 sử dụng TrueSTUDIO
Bây giờ mã hoặc dự án của bạn sẽ tự động mở trong TrueSTUDIO nếu TrueSTUDIO yêu cầu vị trí không gian làm việc, sau đó cung cấp vị trí không gian làm việc hoặc đi với vị trí mặc định.
Người dùng sẽ thấy màn hình bên dưới và sau đó cần nhấp vào dấu góc có màu đỏ.
Và bây giờ chúng ta có thể thấy mã trong IDE TreuSTUDIO của mình. Ở phía bên trái trong thư mục 'src', chúng ta có thể thấy các tệp chương trình khác (có phần mở rộng.c) đã được tạo cho chúng ta từ STM32Cube. Chúng ta chỉ cần lập trình tệp main.c. Ngay cả trong tệp main.c, chúng tôi sẽ có một số thứ được thiết lập sẵn bởi CubeMX, chúng tôi chỉ phải chỉnh sửa nó cho phù hợp với chương trình của chúng tôi. Mã hoàn chỉnh bên trong tệp main.c được cung cấp ở cuối trang này.
Chương trình STM32 Nucleo64 để điều khiển đèn LED bằng nút nhấn
Vì tất cả trình điều khiển và mã cần thiết được tạo bởi STM32CubeMX, chúng tôi chỉ phải định cấu hình một chân LED làm đầu ra và một nút nhấn làm Đầu vào. Chương trình điều khiển led bằng nút nhấn nên được viết trong tệp main.c. Chương trình hoàn chỉnh có thể được tìm thấy ở cuối trang này. Giải thích về nó như sau
Chúng tôi chỉ viết mã để bật tắt đèn LED bằng nút nhấn. Để đạt được điều này, trước tiên chúng tôi xác định các chân cho đèn LED và nút nhấn. Ở đây chúng tôi đã xác định một đèn LED ở số Pin 5 của PORTA
# xác định LED_PORT GPIOA # xác định LED_PIN GPIO_PIN_5
Và xác định công tắc tại chân số 13 của PORTC.
#define SW_PORT GPIOC #define SW_PIN GPIO_PIN_13
Sau đó, trong chức năng chính, chúng tôi đã khởi tạo tất cả các thiết bị ngoại vi được sử dụng.
/ * Khởi tạo tất cả các thiết bị ngoại vi được cấu hình * / MX_GPIO_Init (); MX_USART2_Init ();
Và sau đó đọc nút nhấn bằng cách sử dụng câu lệnh if và nếu tìm thấy nút nhấn (THẤP) thì đèn LED sẽ chuyển trạng thái của nó.
While (1) {/ * MÃ NGƯỜI DÙNG KẾT THÚC TẠI WHILE * / If (! HAL_GPIO_ReadPin (SW_PORT, SW_PIN)) {HAL_GPIO_TogglePin (SW_PORT, LED_PIN); HAL_Delay (200); } / * MÃ NGƯỜI DÙNG BẮT ĐẦU 3 * /}
Ở đây hàm HAL_GPIO_ReadPin (SW_PORT, SW_PIN) có hai đối số, một là PORT và đối số còn lại là chân tại đó công tắc được kết nối và chân này được cấu hình là INPUT trong khi cấu hình thiết bị ngoại vi trong STM32CubeMX.
Gỡ lỗi và tải mã lên Bảng phát triển STM32 Necleo64 bằng TrueSTUDIO
Bây giờ kết nối bo mạch của bạn với máy tính bằng cáp lập trình. Sau khi bạn kết nối nó, trình điều khiển cần thiết cho bo mạch sẽ được tự động tải xuống, bạn có thể kiểm tra điều này bằng trình quản lý thiết bị.
Sau đó, Nhấn vào biểu tượng gỡ lỗi được đánh dấu bằng vòng tròn màu đỏ trong hình bên dưới để biên dịch chương trình và vào chế độ gỡ lỗi.
Trong chế độ gỡ lỗi, mã sẽ tự động được tải lên. Bây giờ chúng ta cần chạy mã bằng cách nhấn 'Tiếp tục' hoặc F8 (được đánh dấu trong mạch màu đỏ trong hình dưới đây).
Bây giờ chúng ta có thể kiểm tra điều khiển của đèn LED bằng cách nhấn nút nhấn. Theo mã, đèn LED sẽ thay đổi trạng thái của nó mỗi khi bạn nhấn nút nhấn. Hoạt động hoàn chỉnh cũng có thể được tìm thấy trong video được liên kết ở cuối trang này.
Sau khi thử nghiệm, chúng tôi cũng có thể kết thúc chương trình bằng cách nhấn vào biểu tượng kết thúc, được đánh dấu bằng vòng tròn màu đỏ trong hình dưới đây.