Lập trình STM32 - STM32CubeMX

Tạo Project với STM32CubeMX

Như bài trước đã giới thiệu, STM32CubeMX là công cụ giúp khởi tạo phần cứng, ngoại vi, xung nhịp… cho vi điều khiển (MCU) STM32 một cách nhanh chóng.

Sử dụng phần mềm này đã giúp mình có tốc độ tiếp cận với dòng vi điều khiển này phải nói là rất nhanh. Hầu như mình không cần phải nhớ bất cứ thanh ghi hay thiết lập từng bit, các API được hỗ trợ sẵn từ nhà sản xuất thực sự dễ dùng, và dễ tiếp cận.

Bài viết này sẽ hướng dẫn nhanh cách tạo một Project bằng STM32CubeMX sử dụng vi điều khiển STM32F103RCT6.

1. Tạo Project

Mở phần mềm STM32CubeMX lên, nhấn vào New Project để bắt đầu tạo project mới.

Cửa sổ hiện ra với các thiết lập:

Tạo Project

2. Chọn ngoại vi

Sau khi đã lựa chọn xong MCU, tiến hành chọn ngoại vi cần dùng tại thẻ PinOut:

Cấu hình chân MCU

3. Điều chỉnh xung nhịp

Sau khi đã lựa chọn ngoại vi cần thiết, tiến hành cấu hình xung đồng hồ cho ngoại vi tại thẻ Clock Configuration.

Riêng phần này bạn cần tham khảo trong datasheet của mỗi loại MCU để xem cách thức cấu hình cho mỗi ngoại vi ra sao.

Mình dùng GPIO nên tạm thời sẽ không cần quan tâm phần này.

Cấu hình Clock

4. Cấu hình ngoại vi

Tiến hành cấu hình đặc tính của ngoại vi đã chọn tại thẻ Configuration.

Tại đây phần mềm có biểu diễn theo cấu trúc firmware, tùy vào loại ngoại vi bạn dùng mà phần mềm xếp vào nhóm chức năng riêng.

Cấu hình ngoại vi

Ví dụ như ở đây mình chỉ dùng chức năng GPIO thì sẽ tiến hành cấu hình GPIO bằng cách nhấn vào thành phần GPIO.

Cấu hình chế độ ngoại vi

GPIO của STM32 hỗ trợ 2 chế độ: Push Pull (Đẩy kéo) và Open Drain (Đầu ra cửa cực hở), tốc độ đáp ứng…

Mỗi ngoại vi có các đặc tính riêng, người dùng có thể nhanh chóng điều chỉnh, chọn chế độ mà không cần quá phức tạp như trên các vi điều khiển cấp thấp.

5. Xuất mã nguồn đã cấu hình

Sau khi đã điều chỉnh, cấu hình những ngoại vi cần thiết, chúng ta tiến hành xuất mã nguồn để import vào các trình biên dịch như IAR, KeilC…

Cấu hình đường dẫn Project

Nhấn nút có hình răng cưa (Generate source code) hoặc chọn Project >> Generate code hoặc nhấn phím tắt Ctrl + Shift + G để mở cửa sổ cấu hình đường dẫn Project.

6. Thư mục mã nguồn

Thư mục mã nguồn xuất ra sẽ bao gồm:

Kết quả

Ví dụ như phía trên mình chọn KeilC phiên bản 5, kết quả sẽ được Project của KeilC v5 luôn.

File TestGPIO.ioc mình dùng test GPIO:

#MicroXplorer Configuration settings - do not modify
#Tue Apr 21 00:28:33 ICT 2015
File.Version=5
KeepUserPlacement=false
Mcu.Family=STM32F1
Mcu.IP0=NVIC
Mcu.IP1=RCC
Mcu.IPNb=2
Mcu.Name=STM32F103R(C-D-E)Tx
Mcu.Package=LQFP64
Mcu.Pin0=PB0
Mcu.Pin1=PB1
Mcu.Pin2=PB2
Mcu.PinsNb=3
Mcu.UserName=STM32F103RCTx
MxCube.Version=4.7.0
MxDb.Version=DB.4.0.70
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SysTick_IRQn=true\:0\:0\:false
PB0.Locked=true
PB0.Signal=GPIO_Output
PB1.Locked=true
PB1.Signal=GPIO_Output
PB2.Locked=true
PB2.Signal=GPIO_Output
PCC.Checker=false
PCC.Family=STM32F1
PCC.MCU=STM32F103R(C-D-E)Tx
PCC.MXVersion=4.7.0
PCC.PartNumber=STM32F103RCTx
PCC.Seq0=0
PCC.SubFamily=STM32F103
PCC.Temperature=25
PCC.Vdd=3.3
RCC.APB1Freq_Value=8000000
RCC.APB2Freq_Value=8000000
RCC.FamilyName=M
RCC.IPParameters=FamilyName,PLLCLKFreq_Value,PLLMCOFreq_Value,APB2Freq_Value,APB1Freq_Value
RCC.PLLCLKFreq_Value=8000000
RCC.PLLMCOFreq_Value=4000000