#3_TIMER Period
TIMER period là nội dung tiếp theo được trình bày trong STM32 cơ bản. Bài viết sử dụng HAL_TIM_PeriodElapsedCallback, cụ thể sẽ làm nhấp nháy LEDs với tần số mong muốn (1Hz).
———————————
Cùng xem bài viết bên dưới.
Nội dung thực hành | Timer Period
- Trong ví dụ này, tiếp tục sử dụng 4 LEDs có sẵn tại kit, làm nhấp nháy LEDs này với tần số 1Hz. Trước đó cần tìm hiểu về mapSTM32 và reference manual để nắm rõ các công thức tính toán tần số mong muốn.
- Tiếp theo là định hướng việc sẽ làm, đầu tiên là khởi tạo xung clock, mạch nạp như mọi khi, chú ý tần số APB1 trong ví dụ là 100Mhz. Sau đó là 4 chân đầu ra GPIO_OutPut tương ứng 4 LEDs từ PD12->PD15. Cuối cùng là khởi tạo TIM2 và cấu hình theo công thức tính toán để có tần số 1Hz.
Thực hành HAL_TIM_PeriodElapsedCallback
Cấu hình chân
Chọn dao động ngoài và mạch nạp như bài trước. Tiếp theo là tính toán hệ số phù hợp để có tần số 1Hz. APB1 có tần số 100Mhz -> hệ số PREDIV_S và PREDIV_A lần lượt là 50000-1 và 2000-1.
- TIM2 cần tính toán theo công thức để có tần số chính xác 1Hz.
- Cấu hình ngắt (NVIC) cho TIM2
Khởi tạo code và thư viện stm32f4xx_HAL_TIM.c
Sau khi cấu hình chân xong ta tiến hành khởi tạo code. Sau đó vào stm32f4xx_HAL_TIM.c để tìm các hàm sẽ sử dụng.
Các hàm HAL_TIM sử dụng trong ví dụ.
- Hàm void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim):
LEDs sẽ nhấp nháy với tần số 1Hz, tương ứng với “level” khi debug.
Phần cứng và code trong bài viết
Phần cứng tiếp tục sử dụng STM32F411, phần mềm sử dụng là stm32cubeIDE. File code ví dụ các bạn tải về bên dưới.
Trong bài sau ta sẽ sử dụng HAL_TIM_PWM_Start để băm xung PWM. Các bài viết khác cùng chuyên mục trong “STM32 cơ bản“.
Các chuyên mục khác:
Bạn có thắc mắc gì trong bài viết không?
Đánh giá và để lại bình luận bên dưới nhá.