Vi điều khiển STM32WL3x
Hướng dẫn sử dụng sản phẩm
- Gói STM32CubeWL3 bao gồm các API lớp thấp (LL) và lớp trừu tượng phần cứng (HAL) bao phủ phần cứng vi điều khiển.
- Nó cũng cung cấp các thành phần phần mềm trung gian như SigfoxTM, FatFS và hạt nhân FreeRTOS.
- Gói hàng đi kèm với exampvà ứng dụng để thực hiện dễ dàng.
- Kiến trúc STM32CubeWL3 được xây dựng xung quanh ba cấp độ: Ứng dụng, HAL và LL.
- API HAL và LL đáp ứng nhiều yêu cầu ứng dụng khác nhau.
- HAL cung cấp các chức năng sử dụng ngoại vi cơ bảnamples và LL cung cấp các thói quen cấp thấp.
- Mức này bao gồm Gói hỗ trợ bo mạch (BSP) và các lớp con HAL.
- BSP cung cấp API cho các thành phần phần cứng trên bo mạch, trong khi HAL cung cấp các ứng dụng ngoại vi cơ bảnampđồng nghiệp.
- Trình điều khiển BSP liên kết trình điều khiển thành phần với các bo mạch cụ thể, giúp dễ dàng chuyển sang phần cứng khác.
- STM32CubeWL3 HAL và LL bổ sung cho nhau, đáp ứng nhiều yêu cầu ứng dụng khác nhau.
- Người dùng có thể tận dụng các API này để tương tác hiệu quả với phần cứng vi điều khiển.
Giới thiệu
STM32Cube là sáng kiến độc đáo của STMicroelectronics nhằm cải thiện đáng kể năng suất của nhà thiết kế bằng cách giảm nỗ lực, thời gian và chi phí phát triển. STM32Cube bao gồm toàn bộ danh mục STM32. STM32Cube bao gồm:
STM32Cube bao gồm:
- Một bộ công cụ phát triển phần mềm thân thiện với người dùng để bao gồm quá trình phát triển dự án từ giai đoạn hình thành đến hiện thực hóa, trong số đó là:
- STM32CubeMX, 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 tự động bằng cách sử dụng trình hướng dẫn đồ họa
- STM32CubeIDE, một công cụ phát triển tất cả trong một với các tính năng cấu hình ngoại vi, tạo mã, biên dịch mã và gỡ lỗi
- STM32CubeCLT, bộ công cụ phát triển dòng lệnh tất cả trong một với tính năng biên dịch mã, lập trình bảng và gỡ lỗi
- STM32CubeProgrammer (STM32CubeProg), một công cụ lập trình có sẵn trong các phiên bản đồ họa và dòng lệnh
- STM32CubeMonitor (STM32CubeMonitor, STM32CubeMonPwr, STM32CubeMonRF, STM32CubeMonUCPD), các công cụ giám sát mạnh mẽ để tinh chỉnh hành vi và hiệu suất của các ứng dụng STM32 trong thời gian thực
- Các gói MCU và MPU STM32Cube, nền tảng phần mềm nhúng toàn diện dành riêng cho từng dòng vi điều khiển và vi xử lý (như STM32CubeWL3 cho dòng sản phẩm STM32WL3x), bao gồm:
- Lớp trừu tượng phần cứng STM32Cube (HAL), đảm bảo tính di động tối đa trong danh mục STM32
- STM32Cube API lớp thấp, đảm bảo hiệu suất và dấu chân tốt nhất với mức độ kiểm soát cao của người dùng đối với phần cứng
- Một tập hợp nhất quán các thành phần phần mềm trung gian như hạt nhân FreeRTOS™, FatFS và Sigfox™
- Tất cả các tiện ích phần mềm nhúng với đầy đủ các thiết bị ngoại vi và ứng dụngamptập
- Gói mở rộng STM32Cube, chứa các thành phần phần mềm nhúng bổ sung cho các chức năng của Gói MCU và MPU STM32Cube với:
- Tiện ích mở rộng phần mềm trung gian và các lớp ứng dụng
- Exampchạy trên một số bảng phát triển STMicroelectronics cụ thể
- Hướng dẫn sử dụng này mô tả cách bắt đầu sử dụng Gói MCU STM32CubeWL3.
Phần 2 mô tả các tính năng chính của STM32CubeWL3 và Phần 3 cung cấp một cái nhìn tổng quanview của kiến trúc và cấu trúc gói MCU.
Thông tin chung
- STM32CubeWL3 chạy các ứng dụng trình diễn dưới GHz, bao gồm các tệp nhị phân Sigfox™, trên các bộ vi điều khiển dòng sản phẩm STM32WL3x dựa trên bộ xử lý Arm® Cortex®‑M0+.
- Bộ vi điều khiển STM32WL3x tích hợp thiết bị ngoại vi vô tuyến RF sub-GHz tiên tiến của STMicroelectronics, được tối ưu hóa để tiêu thụ điện năng cực thấp và hiệu suất vô tuyến tuyệt vời, mang lại tuổi thọ pin vô song.
Ghi chú: Arm là thương hiệu đã đăng ký của Arm Limited (hoặc các công ty con của công ty này) tại Hoa Kỳ và / hoặc các nơi khác.
Các tính năng chính của STM32CubeWL3
- Gói MCU STM32CubeWL3 chạy trên bộ vi điều khiển STM32 32-bit dựa trên bộ xử lý Arm® Cortex®‑M0+. Nó tập hợp, trong một gói duy nhất, tất cả các thành phần phần mềm nhúng chung cần thiết để phát triển ứng dụng cho Dòng sản phẩm STM32WL3x vi điều khiển.
- Gói này bao gồm các API lớp thấp (LL) và lớp trừu tượng phần cứng (HAL) bao gồm phần cứng vi điều khiển, cùng với một bộ ex mở rộngamples chạy trên bo mạch STMicroelectronics. API HAL và LL có sẵn trong giấy phép BSD nguồn mở để thuận tiện cho người dùng. Nó cũng bao gồm các thành phần phần mềm trung gian hạt nhân Sigfox™, FatFS và FreeRTOS™.
- Gói MCU STM32CubeWL3 cũng cung cấp một số ứng dụng và bản trình diễn triển khai tất cả các thành phần phần mềm trung gian của nó.
- Bố cục thành phần gói MCU STM32CubeWL3 được minh họa trong Hình 1.
Kiến trúc STM32CubeWL3 trênview
- Giải pháp gói MCU STM32CubeWL3 được xây dựng xung quanh ba cấp độ độc lập dễ dàng tương tác như mô tả trong Hình 2.
Cấp độ 0
Cấp độ này được chia thành ba lớp con:
- Gói hỗ trợ hội đồng quản trị (BSP).
- Lớp trừu tượng phần cứng (HAL):
- Trình điều khiển ngoại vi HAL
- Trình điều khiển lớp thấp
- Cách sử dụng ngoại vi cơ bảnampđồng nghiệp.
Gói hỗ trợ hội đồng quản trị (BSP)
Lớp này cung cấp một bộ API liên quan đến các thành phần phần cứng trong bo mạch phần cứng (như đèn LED, nút và trình điều khiển COM). Nó bao gồm hai phần:
Thành phần:
- Đây là trình điều khiển liên quan đến thiết bị bên ngoài trên bo mạch chứ không phải STM32. Trình điều khiển thành phần cung cấp các API cụ thể cho các thành phần bên ngoài của trình điều khiển BSP và có thể di động trên bất kỳ bo mạch nào khác.
- Trình điều khiển BSP:
- Nó cho phép liên kết các trình điều khiển thành phần với một bo mạch cụ thể và cung cấp một bộ API thân thiện với người dùng. Quy tắc đặt tên API là BSP_FUNCT_Action().
- Examptập tin: BSP_LED_Init(), BSP_LED_On()
BSP dựa trên kiến trúc mô-đun cho phép chuyển đổi dễ dàng trên bất kỳ phần cứng nào chỉ bằng cách thực hiện các quy trình cấp thấp.
Lớp trừu tượng phần cứng (HAL) và lớp thấp (LL)
STM32CubeWL3 HAL và LL bổ sung cho nhau và đáp ứng nhiều yêu cầu ứng dụng khác nhau:
- Trình điều khiển HAL cung cấp các API có tính di động cao hướng đến chức năng cấp cao. Chúng giấu MCU và độ phức tạp của thiết bị ngoại vi đối với người dùng cuối.
Trình điều khiển HAL cung cấp các API hướng tính năng đa phiên bản chung, giúp đơn giản hóa việc triển khai ứng dụng của người dùng bằng cách cung cấp các quy trình sẵn sàng sử dụng. Ví dụ:ample, đối với các thiết bị ngoại vi giao tiếp (I2C, UART và các thiết bị khác), nó cung cấp các API cho phép khởi tạo và cấu hình thiết bị ngoại vi, quản lý việc truyền dữ liệu dựa trên quá trình thăm dò, ngắt hoặc DMA và xử lý các lỗi giao tiếp có thể phát sinh trong quá trình giao tiếp. Các API trình điều khiển HAL được chia thành hai loại:- API chung, cung cấp các chức năng chung và chung cho tất cả các bộ vi điều khiển dòng STM32.
- API mở rộng, cung cấp các chức năng cụ thể và tùy chỉnh cho một dòng cụ thể hoặc một số bộ phận cụ thể.
- API lớp thấp cung cấp API cấp thấp ở cấp đăng ký, với khả năng tối ưu hóa tốt hơn nhưng tính di động kém hơn.
Họ cần có kiến thức sâu rộng về MCU và các thông số kỹ thuật ngoại vi.
Trình điều khiển LL được thiết kế để cung cấp một lớp nhanh, nhẹ, hướng đến chuyên gia, gần với phần cứng hơn HAL. Trái ngược với HAL, API LL không được cung cấp cho các thiết bị ngoại vi mà quyền truy cập được tối ưu hóa không phải là tính năng chính hoặc cho những thiết bị yêu cầu cấu hình phần mềm nặng hoặc ngăn xếp cấp cao phức tạp.
Tính năng của trình điều khiển LL: - Tập hợp các hàm khởi tạo các tính năng chính của ngoại vi theo các tham số được chỉ định trong cấu trúc dữ liệu.
- Một tập hợp các hàm để điền vào cấu trúc dữ liệu khởi tạo các giá trị đặt lại tương ứng với từng trường.
- Chức năng khôi phục cài đặt ngoại vi (khôi phục các thanh ghi ngoại vi về giá trị mặc định).
- Một tập hợp các hàm nội tuyến để truy cập vào thanh ghi trực tiếp và nguyên tử.
- Hoàn toàn độc lập với HAL và có khả năng sử dụng ở chế độ độc lập (không có trình điều khiển HAL).
- Bảo hiểm đầy đủ các tính năng ngoại vi được hỗ trợ.
Cách sử dụng ngoại vi cơ bảnamptập
Lớp này bao quanh exampcác tập tin được xây dựng trên thiết bị ngoại vi STM32 chỉ sử dụng tài nguyên HAL và BSP.
Ghi chú: Biểu tình cũamples cũng có sẵn để hiển thị các ví dụ phức tạp hơnampcác tình huống với các thiết bị ngoại vi cụ thể, chẳng hạn như MRSUBG và LPAWUR.
Cấp độ 1
Cấp độ này được chia thành hai lớp con:
- Thành phần phần mềm trung gian
- Exampcác tập tin dựa trên các thành phần phần mềm trung gian
Thành phần phần mềm trung gian
Phần mềm trung gian là một tập hợp các thư viện bao gồm hạt nhân FreeRTOS™, FatFS và thư viện giao thức Sigfox™.
Tương tác theo chiều ngang giữa các thành phần của lớp này được thực hiện bằng cách gọi các API đặc trưng.
Tương tác dọc với trình điều khiển lớp thấp được thực hiện thông qua các cuộc gọi lại cụ thể và macro tĩnh được triển khai trong giao diện cuộc gọi hệ thống thư viện.
Các tính năng chính của từng thành phần phần mềm trung gian như sau:
- Hạt nhân FreeRTOS™: triển khai hệ điều hành thời gian thực (RTOS), được thiết kế cho các hệ thống nhúng.
- Sigfox™: triển khai thư viện giao thức Sigfox™ tuân thủ mạng giao thức Sigfox™ và bao gồm thư viện giao thức thử nghiệm RF để thử nghiệm với các công cụ RF Sigfox™.
- FatFS: triển khai FAT chung file mô-đun hệ thống.
Exampcác tập tin dựa trên các thành phần phần mềm trung gian
- Mỗi thành phần phần mềm trung gian đi kèm với một hoặc nhiều examples, còn gọi là ứng dụng, hướng dẫn cách sử dụng nó.
- Tích hợp cũampcác tập tin sử dụng một số thành phần phần mềm trung gian cũng được cung cấp.
Gói phần mềm STM32CubeWL3 đã kết thúcview
Thiết bị và phần cứng STM32WL3x được hỗ trợ
- STM32Khối lập phương cung cấp một lớp trừu tượng phần cứng (HAL) có tính di động cao được xây dựng xung quanh một kiến trúc chung. Nó cho phép nguyên tắc xây dựng dựa trên các lớp, chẳng hạn như sử dụng lớp phần mềm trung gian để triển khai các chức năng của chúng mà không cần biết sâu về MCU nào đang được sử dụng. Điều này cải thiện khả năng tái sử dụng mã thư viện và đảm bảo khả năng di chuyển dễ dàng sang các thiết bị khác.
- Ngoài ra, với kiến trúc nhiều lớp của nó, STM32CubeWL3 cung cấp hỗ trợ đầy đủ cho tất cả các dòng sản phẩm STM32WL3x.
- Người dùng chỉ cần xác định đúng macro trong stm32wl3x.h.
- Bảng 1 hiển thị macro cần xác định tùy thuộc vào thiết bị dòng sản phẩm STM32WL3x được sử dụng. Macro này cũng phải được xác định trong bộ xử lý trước của trình biên dịch.
Bảng 1. Macro cho dòng sản phẩm STM32WL3x
Macro được xác định trong STM32WL3X.h | Dòng sản phẩm thiết bị STM32WL3x |
stm32wl3x | Bộ vi điều khiển STM32WL30xx Bộ vi điều khiển STM32WL31xx Bộ vi điều khiển STM32WL33xx |
Bảng 2. Bo mạch cho dòng sản phẩm STM32WL3x
Bảng | Thiết bị được hỗ trợ bởi bo mạch STM32WL3x |
NUCLEO-WL33CC1 | STM32WL33CC |
NUCLEO-WL33CC2 | STM32WL33CC |
Gói MCU STM32CubeWL3 có thể chạy trên bất kỳ phần cứng tương thích nào. Người dùng cập nhật trình điều khiển BSP để chuyển ex được cung cấpamptrên bo mạch của chúng, nếu chúng có cùng các tính năng phần cứng (như đèn LED hoặc nút bấm).
Gói phần mềm đã hếtview
- Giải pháp gói MCU STM32CubeWL3 được cung cấp trong một gói zip duy nhất, với cấu trúc được hiển thị trong Hình 3.
Thận trọng: Người dùng không được sửa đổi các thành phần files. Người dùng chỉ có thể chỉnh sửa các nguồn \Projects. Đối với mỗi bảng, một bộ examples được cung cấp các dự án được cấu hình sẵn cho chuỗi công cụ EWARM, MDK-ARM và STM32CubeIDE.
Hình 4 hiển thị cấu trúc dự án cho bo mạch NUCLEO-WL33CCx.
Người cũamples được phân loại tùy thuộc vào cấp độ STM32CubeWL3 mà chúng áp dụng. Chúng được đặt tên như sau:
- Cấp 0 cũamples được gọi là Examples, Examples_LL và Examples_MIX. Chúng sử dụng trình điều khiển HAL, trình điều khiển LL và hỗn hợp trình điều khiển HAL và LL mà không có bất kỳ thành phần phần mềm trung gian nào. Trình diễn ví dụampcũng có sẵn.
- Cấp 1 cũamples được gọi là Ứng dụng. Chúng cung cấp các trường hợp sử dụng điển hình của từng thành phần phần mềm trung gian.
Bất kỳ ứng dụng phần mềm nào cho một bo mạch nhất định đều có thể được xây dựng nhanh chóng bằng cách sử dụng các dự án mẫu có sẵn trong thư mục Templates và Templates_LL.
Examples, Examples_LL và Examples_MIX có cùng cấu trúc:
- \Inc thư mục chứa tất cả các tiêu đề files.
- \Thư mục src chứa mã nguồn.
- Các thư mục \EWARM, \MDK-ARM và \STM32CubeIDE chứa dự án được cấu hình sẵn cho mỗi chuỗi công cụ.
- readme.md và readme.html mô tả examphành vi và môi trường cần thiết để làm cho nó hoạt động.
Bắt đầu với STM32CubeWL3
Chạy một người yêu cũ đầu tiênample
Phần này giải thích cách chạy ex đầu tiên đơn giản như thế nàoamptrong STM32CubeWL3. Nó sử dụng hình ảnh minh họa về việc tạo ra một công tắc LED đơn giản chạy trên bo mạch NUCLEO-WL33CC1:
- Tải xuống gói MCU STM32CubeWL3.
- Giải nén hoặc chạy trình cài đặt nếu có vào thư mục bạn chọn.
- Đảm bảo không sửa đổi cấu trúc gói được hiển thị trong Hình 3. Cấu trúc gói phần mềm STM32CubeWL3. Lưu ý rằng cũng nên sao chép gói ở vị trí gần ổ đĩa gốc (tức là C:\ST hoặc G:\Tests), vì một số IDE gặp sự cố khi đường dẫn quá dài.
Làm thế nào để chạy HAL example
Trước khi tải và chạy một example, chúng tôi khuyến khích bạn nên đọc example đọc tôi file cho bất kỳ cấu hình cụ thể nào.
- Duyệt đến \Projects\NUCLEO-WL33CC\Exampđồng nghiệp.
- Mở thư mục \GPIO, sau đó mở thư mục \GPIO_EXTI.
- Mở dự án bằng toolchain ưa thích. Một cái nhìn nhanhview về cách mở, xây dựng và chạy một ứng dụng cũamptập tin với các chuỗi công cụ được hỗ trợ được đưa ra dưới đây.
- Xây dựng lại tất cả files và tải hình ảnh vào bộ nhớ đích.
- Chạy người yêu cũample. Để biết thêm chi tiết, hãy tham khảo example đọc tôi file.
Để mở, xây dựng và chạy một exampVới mỗi chuỗi công cụ được hỗ trợ, hãy làm theo các bước dưới đây:
- EWARM:
- Dưới cái cũamples, mở thư mục con \EWARM.
- Khởi chạy không gian làm việc Project.eww (tên không gian làm việc có thể thay đổi từ tên này sang tên khác)ample sang người khác).
- Xây dựng lại tất cả files: [Dự án]>[Xây dựng lại tất cả].
- Tải hình ảnh dự án: [Project]>[Debug].
- Chạy chương trình: [Debug]>[Go (F5)].
- MDK-ARM:
- Dưới cái cũamples, mở thư mục con \MDK-ARM.
- Mở không gian làm việc Project.uvproj (tên không gian làm việc có thể thay đổi từ tên này sang tên khác)ample sang người khác).
- Xây dựng lại tất cả files: [Dự án]>[Xây dựng lại tất cả mục tiêu fileNS].
- Tải hình ảnh dự án: [Debug]>[Start/Stop Debug Session].
- Chạy chương trình: [Debug]>[Run (F5)].
- STM32CubeIDE:
- Mở chuỗi công cụ STM32CubeIDE.
- Bấm vào [File]>[Switch Workspace]>[Other] và duyệt đến thư mục không gian làm việc STM32CubeIDE.
- Bấm vào [File]>[Nhập], chọn [Chung]>[Dự án hiện có vào Không gian làm việc], sau đó nhấp vào [Tiếp theo].
- Duyệt đến thư mục không gian làm việc STM32CubeIDE và chọn dự án.
- Xây dựng lại toàn bộ dự án files: Chọn dự án trong cửa sổ Project Explorer sau đó nhấp vào menu [Project]>[Build project].
- Chạy chương trình: [Chạy]>[Gỡ lỗi (F11)].
Phát triển một ứng dụng tùy chỉnh
Sử dụng STM32CubeMX để phát triển hoặc cập nhật ứng dụng
- Trong Gói MCU STM32Cube, hầu như tất cả các dự án đềuampcác tập tin được tạo bằng công cụ STM32CubeMX để khởi tạo hệ thống, thiết bị ngoại vi và phần mềm trung gian.
Việc sử dụng trực tiếp một dự án hiện cóamptập tin từ công cụ STM32CubeMX yêu cầu STM32CubeMX 6.12.0 trở lên:
- Sau khi cài đặt STM32CubeMX, hãy mở và cập nhật dự án được đề xuất nếu cần thiết.
Cách đơn giản nhất để mở một dự án hiện có là nhấp đúp vào *.ioc file để STM32CubeMX tự động mở dự án và nguồn của nó files. STM32CubeMX tạo ra mã nguồn khởi tạo của các dự án như vậy. - Mã nguồn ứng dụng chính được chứa trong các chú thích “USER CODE BEGIN” và “USER CODE END”. Nếu lựa chọn và cài đặt ngoại vi được sửa đổi, STM32CubeMX sẽ cập nhật phần khởi tạo của mã trong khi vẫn giữ nguyên mã nguồn ứng dụng chính.
- Để phát triển một dự án tùy chỉnh với STM32CubeMX, hãy làm theo quy trình từng bước sau:
- Cấu hình tất cả phần mềm nhúng cần thiết bằng trình giải quyết xung đột chân cắm, trình trợ giúp thiết lập cây xung nhịp, máy tính mức tiêu thụ điện năng và tiện ích thực hiện cấu hình thiết bị ngoại vi MCU (như GPIO hoặc USART).
- Tạo mã C khởi tạo dựa trên cấu hình đã chọn. Mã này đã sẵn sàng để sử dụng trong một số môi trường phát triển. Mã người dùng được lưu giữ ở lần tạo mã tiếp theo.
Để biết thêm thông tin về STM32CubeMX, hãy tham khảo hướng dẫn sử dụng STM32CubeMX để biết cấu hình STM32 và khởi tạo mã C (UM1718).
Ứng dụng trình điều khiển
ứng dụng HAL
Phần này mô tả các bước cần thiết để tạo ứng dụng HAL tùy chỉnh bằng STM32CubeWL3
- Tạo một dự án
Để tạo một dự án mới, hãy bắt đầu từ dự án Mẫu được cung cấp cho mỗi bảng trong \Dự án\ \Mẫu hoặc từ bất kỳ dự án nào có sẵn trong \Dự án\ \Bán tạiamples hoặc \Dự án\ \Ứng dụng (nơi đề cập đến tên hội đồng quản trị).
Dự án Template cung cấp một hàm vòng lặp chính trống. Tuy nhiên, đây là điểm khởi đầu tốt để hiểu các thiết lập dự án STM32CubeWL3. Template có các đặc điểm sau:- Nó chứa mã nguồn HAL, trình điều khiển CMSIS và BSP, là bộ thành phần tối thiểu cần thiết để phát triển mã trên một bảng nhất định.
- Nó chứa các đường dẫn đi kèm cho tất cả các thành phần phần sụn.
- Nó xác định các thiết bị dòng sản phẩm STM32WL3x được hỗ trợ, cho phép trình điều khiển CMSIS và HAL được cấu hình chính xác.
- Nó cung cấp cho người dùng sẵn sàng sử dụng fileđược cấu hình sẵn như hình dưới đây:
- HAL được khởi tạo với cơ sở thời gian mặc định bằng SysTick lõi Arm®.
- SysTick ISR được triển khai cho mục đích HAL_Delay().
- Lưu ý: Khi sao chép một dự án hiện có sang một vị trí khác, hãy đảm bảo tất cả các đường dẫn đi kèm đều được cập nhật.
- Cấu hình các thành phần phần sụn
Các thành phần HAL và phần mềm trung gian cung cấp một tập hợp các tùy chọn cấu hình tại thời điểm xây dựng bằng cách sử dụng macro #define được khai báo trong tiêu đề file. Cấu hình mẫu file được cung cấp trong mỗi thành phần, phải được sao chép vào thư mục dự án (thường là thư mục cấu hình file được đặt tên là xxx_conf_template.h, đoạn- mẫu cần phải được xóa khi sao chép nó vào thư mục dự án). Cấu hình file cung cấp đủ thông tin để hiểu tác động của từng tùy chọn cấu hình. Thông tin chi tiết hơn có sẵn trong tài liệu được cung cấp cho từng thành phần.
- Bắt đầu thư viện HAL
Sau khi chuyển sang chương trình chính, mã ứng dụng phải gọi API HAL_Init() để khởi tạo thư viện HAL, thực hiện các tác vụ sau:- Cấu hình chế độ tải trước bộ nhớ flash và ưu tiên ngắt SysTick (thông qua các macro được xác định trong stm32 wl3x_hal_conf.h).
- Cấu hình SysTick để tạo ra một ngắt mỗi mili giây tại mức ưu tiên ngắt SysTick TICK_INT_PRIO được xác định trong stm32wl3x_hal_conf.h.
- Đặt mức độ ưu tiên của nhóm NVIC thành 0.
- Gọi hàm gọi lại HAL_MspInit() được xác định trong người dùng stm32wl3x_hal_msp.c file để thực hiện khởi tạo phần cứng cấp thấp toàn cầu.
- Cấu hình đồng hồ hệ thống
Cấu hình đồng hồ hệ thống được thực hiện bằng cách gọi hai API được mô tả bên dưới:- HAL_RCC_OscConfig(): API này cấu hình các bộ dao động bên trong và bên ngoài. Người dùng chọn
cấu hình một hoặc tất cả các bộ dao động. - HAL_RCC_ClockConfig(): API này cấu hình nguồn xung nhịp hệ thống, độ trễ bộ nhớ flash và bộ chia tần số trước AHB và APB.
- HAL_RCC_OscConfig(): API này cấu hình các bộ dao động bên trong và bên ngoài. Người dùng chọn
- Khởi tạo thiết bị ngoại vi
- Đầu tiên hãy viết hàm khởi tạo ngoại vi. Tiến hành như sau:
- Kích hoạt đồng hồ ngoại vi.
- Định cấu hình GPIO ngoại vi.
- Cấu hình kênh DMA và bật ngắt DMA (nếu cần).
- Bật chức năng ngắt ngoại vi (nếu cần).
- Chỉnh sửa stm32xxx_it.c để gọi các trình xử lý ngắt cần thiết (ngoại vi và DMA), nếu cần.
- Viết các hàm gọi lại hoàn tất quy trình nếu cần sử dụng ngắt ngoại vi hoặc DMA.
- Trong người dùng main.c file, khởi tạo cấu trúc xử lý ngoại vi sau đó gọi hàm khởi tạo ngoại vi để khởi tạo ngoại vi.
- Phát triển một ứng dụng
Tại đây stage, hệ thống đã sẵn sàng và có thể bắt đầu phát triển mã ứng dụng của người dùng.
HAL cung cấp các API trực quan và sẵn sàng sử dụng để định cấu hình thiết bị ngoại vi. Nó hỗ trợ thăm dò, ngắt và mô hình lập trình DMA để đáp ứng mọi yêu cầu ứng dụng. Để biết thêm chi tiết về cách sử dụng từng thiết bị ngoại vi, hãy tham khảo tài liệu phong phúampBộ sản phẩm được cung cấp trong Gói MCU STM32CubeWL3.
Thận trọng: Trong triển khai HAL mặc định, bộ đếm thời gian SysTick được sử dụng làm cơ sở thời gian: nó tạo ra các ngắt theo các khoảng thời gian đều đặn. Nếu HAL_Delay() được gọi từ quy trình ISR ngoại vi, hãy đảm bảo rằng ngắt SysTick có mức ưu tiên cao hơn (thấp hơn về mặt số) so với ngắt ngoại vi. Nếu không, quá trình ISR của người gọi sẽ bị chặn. Các chức năng ảnh hưởng đến cấu hình cơ sở thời gian được khai báo là __weak để có thể ghi đè trong trường hợp triển khai khác trong người dùng file (sử dụng bộ đếm thời gian đa năng, ví dụample hoặc nguồn thời gian khác). Để biết thêm chi tiết, hãy tham khảo HAL_TimeBase cũamplà.
ứng dụng LL
Phần này mô tả các bước cần thiết để tạo ứng dụng LL tùy chỉnh bằng STM32CubeWL3.
- Tạo một dự án
Để tạo một dự án mới, hãy bắt đầu từ dự án Templates_LL được cung cấp cho mỗi bảng trong \Projects\ \Templates_LL hoặc từ bất kỳ dự án nào có sẵn trong \Projects\ \Bán tạiamples_ LL ( đề cập đến tên bo mạch, chẳng hạn như NUCLEO-WL32CC33).
Dự án mẫu cung cấp một hàm vòng lặp chính trống, đây là điểm khởi đầu tốt để hiểu các thiết lập dự án cho STM32CubeWL3. Các đặc điểm chính của mẫu như sau:- Nó chứa mã nguồn của trình điều khiển LL và CMSIS, đây là bộ thành phần tối thiểu cần thiết để phát triển mã trên một bo mạch nhất định.
- Nó chứa các đường dẫn đi kèm cho tất cả các thành phần phần sụn cần thiết.
- Nó chọn thiết bị dòng sản phẩm STM32WL3x được hỗ trợ và cho phép cấu hình chính xác trình điều khiển CMSIS và LL.
- Nó cung cấp cho người dùng sẵn sàng sử dụng files được cấu hình sẵn như sau:
- main.h: Lớp trừu tượng định nghĩa LED và USER_BUTTON.
- main.c: Cấu hình đồng hồ hệ thống cho tần số tối đa.
- Chuyển LL cũamplê:
- Sao chép/dán thư mục Templates_LL – để giữ nguyên nguồn ban đầu – hoặc cập nhật trực tiếp dự án Template s_LL hiện có.
- Sau đó, việc chuyển đổi chủ yếu bao gồm việc thay thế Templates_LL files của Exampdự án mục tiêu les_LL.
- Giữ tất cả các bộ phận cụ thể của bảng. Vì lý do rõ ràng, các phần cụ thể của bảng được gắn cờ bằng các ký hiệu cụ thể. tags:
- Vì vậy, các bước chuyển chính như sau:
- Thay thế stm32wl3x_it.h file.
- Thay thế stm32wl3x_it.c file.
- Thay thế main.h file và cập nhật nó: Giữ định nghĩa đèn LED và nút người dùng của mẫu LL trong CẤU HÌNH CỤ THỂ CỦA BAN tags.
- Thay thế main.c file và cập nhật nó:
- Giữ cấu hình đồng hồ của hàm mẫu SystemClock_Config() LL trong CẤU HÌNH CỤ THỂ CỦA BAN tags.
- Tùy thuộc vào định nghĩa LED, thay thế mỗi lần xuất hiện LDx bằng một LDy khác có sẵn trong file chính.h.
- Với những sửa đổi này, cựuampchạy trên bảng mục tiêu.
Ứng dụng RF, trình diễn và thử nghiệmamptập
Các loại ứng dụng RF, trình diễn và ví dụ khác nhauampCác tập tin có sẵn trong gói STM32CubeWL3.
Chúng được liệt kê trong hai phần dưới đây.
Sub-GHz examples và các cuộc biểu tình
Những cái cũ nàyamples trình bày các tính năng chính của thiết bị ngoại vi vô tuyến MRSUBG và LPAWUR. Những ví dụ nàyampCác tập tin có sẵn tại:
- Dự án\NUCLEO-WL33CC\Examples\MRSUBG
- Dự án\NUCLEO-WL33CC\Examples\LPAWUR
- Dự án\NUCLEO-WL33CC\Trình diễn\MRSUBG
- Dự án\NUCLEO-WL33CC\Trình diễn\LPAWUR
Mỗi người yêu cũamptrình diễn hoặc trình diễn thường bao gồm hai chương trình được gọi là Tx và Rx hoạt động tương ứng như máy phát và máy thu:
Examples/MRSUBG
- MRSUBG_802_15_4: một triển khai của lớp vật lý được định nghĩa theo chuẩn 802.15.4. Nó cho thấy cách cấu hình radio để truyền hoặc nhận các gói 802.15.4.
- MRSUBG_BasicGeneric: Trao đổi các gói tin cơ bản MR_SUBG của STM32WL3x.
- MRSUBG_Chat: Một ứng dụng đơn giản hướng dẫn cách sử dụng Tx và Rx trên cùng một thiết bị.
- MRSUBG_DatabufferHandler: Một người cũample cho biết cách hoán đổi từ Databuffer 0 và 1.
- MRSUBG_Sequencer AutoAck: Một cựuample tự động truyền và nhận các gói tin xác nhận (ACK).
- MRSUBG_WMBusSTD: Trao đổi tin nhắn WM-Bus.
- WakeupRadio: Một người cũampđể kiểm tra thiết bị ngoại vi vô tuyến LPAWUR.
Biểu tình/MRSUBG
- MRSUBG_RTC_Button_TX: Nút nàyampBài viết này hướng dẫn cách thiết lập SoC ở chế độ dừng sâu và cấu hình MRSUBG để đánh thức SoC bằng cách nhấn PB2 để gửi khung hoặc sau khi bộ đếm thời gian RTC hết hạn.
- MRSUBG_Sequencer_Sniff: Ex nàyample cho thấy cách thiết lập trình tự MRSUBG để hoạt động ở chế độ sniff. Ví dụ nàyample thể hiện phía máy thu và yêu cầu một thiết bị khác đóng vai trò là máy phát.
- MRSUBG_Timer: Ứng dụng lên lịch cho nhiều phiên bản của bộ đếm thời gian MRSUBG (có chức năng tự động tải lại) với các khoảng thời gian khác nhau.
- MRSUBG_WakeupRadio_Tx: Ex nàyampgiải thích cách thiết lập SoC ở chế độ dừng sâu và cấu hình MRSUBG để đánh thức SoC bằng cách nhấn PB2 để gửi một khung. Ví dụ nàyample trình bày mặt máy phát và yêu cầu một thiết bị khác như một máy thu LPAWUR. Máy thu example nằm trong thư mục NUCLEO-WL33CC\Demonstrations\LPAWUR\LPAWUR_WakeupRadio_Rx.
Biểu tình/LPAWUR
- LPAWUR_WakeupRadio_Rx: Ex nàyampgiải thích cách thiết lập SoC ở chế độ dừng sâu và cấu hình LPAWUR để đánh thức SoC khi có khung đến và được nhận chính xác. Ví dụ nàyample trình bày phía máy thu và yêu cầu một thiết bị khác làm máy phát. Máy phát example nằm trong thư mục NUCLEO-WL33CC\Demonstrations\MRSUBG\MRSUBG_WakeupRadio_Tx.
Ứng dụng Sigfox™
Các ứng dụng này cho thấy cách triển khai kịch bản Sigfox™ và sử dụng các API Sigfox™ có sẵn. Chúng có sẵn trong đường dẫn dự án Projects\NUCLEO-WL33CC\Applications\Sigfox\:
- Sigfox_CLI: Ứng dụng này cho biết cách sử dụng giao diện dòng lệnh (CLI) để gửi các lệnh sử dụng giao thức Sigfox™ để gửi tin nhắn và thực hiện các bài kiểm tra chứng nhận trước.
- Sigfox_PushButton: Ứng dụng này cho phép đánh giá khả năng vô tuyến của thiết bị STM32WL33xx Sigfox™. Nhấn PB1 sẽ truyền khung Sigfox™ thử nghiệm.
Lịch sử sửa đổi
Bảng 3. Lịch sử sửa đổi tài liệu
Ngày | Ôn tập | Thay đổi |
29-2024-XNUMX | 1 | Phiên bản phát hành đầu tiên. |
30-2024-XNUMX | 2 | Tích hợp đầy đủ STM32CubeWL3 trong STM32Cube. Đã cập nhật:
• Giới thiệu • Phần 2: Các tính năng chính của STM32CubeWL3 • Phần 3.2.1: Các thành phần phần mềm trung gian • Phần 4: Gói phần mềm STM32CubeWL3view • Mục 5.1: Chạy ex đầu tiênample • Mục 5.3: Ứng dụng RF, trình diễn và thử nghiệmamptập Đã thêm: • Phần 5.1.1: Cách chạy HAL example • Phần 5.2.1: Sử dụng STM32CubeMX để phát triển hoặc cập nhật ứng dụng • SMục 6.4: Có bất kỳ dự án mẫu nào cho MRSUBG/LPAWUR ngoại vi không?ampBạn? • Phần 6.5: STM32CubeMX có thể tạo mã dựa trên phần mềm nhúng như thế nào? LOẠI BỎ: • Công cụ máy tính, bao gồm Hoa tiêu, Giao diện người dùng STM32WL3, Và Giao diện người dùng của trình tự MR-SUBG • WiSE-Studio IOMapper có thể tạo mã dựa trên phần mềm nhúng như thế nào? • Navigator có cho phép truy cập vào tài nguyên gói phần mềm không? |
22-2025-XNUMX | 3 | Mở rộng phạm vi thiết bị áp dụng cho vi điều khiển STM32WL30xx và STM32WL31xx trong Bảng 1. Macro cho dòng sản phẩm STM32WL3x. |
THÔNG BÁO QUAN TRỌNG – ĐỌC KỸ
- STMicroelectronics NV và các công ty con (“ST”) có quyền thực hiện các thay đổi, chỉnh sửa, cải tiến, sửa đổi và cải thiện đối với các sản phẩm ST và/hoặc tài liệu này bất kỳ lúc nào mà không cần thông báo. Người mua nên tìm hiểu thông tin mới nhất có liên quan về các sản phẩm ST trước khi đặt hàng. Các sản phẩm ST được bán theo các điều khoản và điều kiện bán hàng của ST có hiệu lực tại thời điểm xác nhận đơn hàng.
- Người mua chịu toàn bộ trách nhiệm về việc lựa chọn, cân nhắc và sử dụng các sản phẩm ST và ST không chịu trách nhiệm về việc hỗ trợ ứng dụng hoặc thiết kế các sản phẩm của người mua.
- ST không cấp bất kỳ giấy phép nào, dù là rõ ràng hay ngụ ý, cho bất kỳ quyền sở hữu trí tuệ nào ở đây.
- Việc bán lại các sản phẩm ST với các điều khoản khác với thông tin được nêu ở đây sẽ làm mất hiệu lực bất kỳ bảo hành nào mà ST cấp cho sản phẩm đó.
- ST và logo ST là thương hiệu của ST. Để biết thêm thông tin về thương hiệu ST, hãy tham khảo www.st.com/trademarks. Tất cả tên sản phẩm hoặc dịch vụ khác là tài sản của chủ sở hữu tương ứng.
- Thông tin trong tài liệu này thay thế và thay thế thông tin đã cung cấp trước đó trong bất kỳ phiên bản nào trước đây của tài liệu này.
- © 2025 STMicroelectronics – Bảo lưu mọi quyền
Câu hỏi thường gặp
Khi nào tôi nên sử dụng HAL thay vì trình điều khiển LL?
Trình điều khiển HAL cung cấp API cấp cao và hướng chức năng, với mức độ di động cao. Độ phức tạp của sản phẩm hoặc thiết bị ngoại vi được ẩn đối với người dùng cuối. Trình điều khiển LL cung cấp API cấp độ đăng ký lớp thấp với khả năng tối ưu hóa tốt hơn nhưng ít di động hơn. Chúng yêu cầu kiến thức chuyên sâu về thông số kỹ thuật sản phẩm hoặc IP.
API khởi tạo LL được kích hoạt như thế nào?
Định nghĩa của API khởi tạo LL và các cấu trúc tài nguyên liên quan, các ký tự và nguyên mẫu được quy định bởi công tắc biên dịch USE_FULL_LL_DRIVER. Để có thể sử dụng API khởi tạo LL, hãy thêm công tắc này vào bộ xử lý trước của trình biên dịch toolchain.
Có bất kỳ dự án mẫu nào cho MRSUBG/LPAWUR thiết bị ngoại vi không?ampBạn?
Để tạo một MRSUBG hoặc LPAWUR mớiampdự án, hoặc bắt đầu từ dự án khung được cung cấp theo Dự án NUCLEO- 33CC Examples MRSUBG hoặc ProjectsNUCLEO-WL33CC Examples LPAWUR hoặc từ bất kỳ dự án nào có sẵn trong cùng các thư mục này.
Làm cách nào STM32CubeMX có thể tạo mã dựa trên phần mềm nhúng?
STM32CubeMX có kiến thức tích hợp về vi điều khiển STM32, bao gồm các thiết bị ngoại vi và phần mềm của chúng, cho phép nó cung cấp biểu diễn đồ họa cho người dùng và tạo ra .h hoặc .c filedựa trên cấu hình của người dùng.
Tài liệu / Tài nguyên
![]() |
Vi điều khiển ST STM32WL3x [tập tin pdf] Hướng dẫn sử dụng Vi điều khiển STM32WL3x, STM32WL3x, Vi điều khiển |