Lập trình cơ bản với Timer (Basic Timer)

Một phần của tài liệu THỰC HÀNH LẬP TRÌNH NHÚNG NÂNG CAO LẬP TRÌNH STM32 (Trang 55 - 60)

Ở bài này, chúng ta sẽ làm ví dụ đơn giản nhất với Timer, đó là dùng Timer để điều khiển một LED sáng 1s, sau đó tắt 1s, rồi lại sáng, tắt, … Lập trình các tính năng nâng cao hơn như PWM, Input Capture, Output Compare, … sẽ được nói đến ở những bài sau.

Cấu hình Chip với Cube Mx:

Cấu hình Timer 2

Clock Source cho Timer ở đây ta chọn là Internal Clock, sang Tab cấu hình Clock, ta thấy thơng qua bộ chia tần, cấu hình tần số cho các Timer là 16MHz

Áp dụng công thức

𝑇𝑈𝐸𝑉 = 𝑃𝑒𝑟𝑖𝑜𝑑 = (1 + 𝐴𝑅𝑅) ∗ 𝑇𝐶𝐾𝐶𝑁𝑇 =(1 + 𝐴𝑅𝑅) ∗ (1 + 𝑃𝑆𝐶)

𝐹𝐶𝐾_𝑃𝑆𝐶

Tài liệu tham khảo: Lập trình nhúng nâng cao

Với FCK_PSC=16MHz = 16.000.000 Hz; ta có thể chọn PSC=1599, và ARR = 9999

Cấu hình Project sinh mã, (Copy only the necessary library file)

Một số hàm làm việc cơ bản

HAL_TIM_Base_Start(TIM_HandleTypeDef *htim)

Hàm HAL_TIM_Base_Start_IT là hàm cho phép bắt đầu chạy TIM2 đồng thời Enable ngắt tràn cho TIM2, bất cứ khi nào CNT của TIM2 tăng quá giá trị được đặt trong ARR (ví dụ này là 9999) nó sẽ được reset về 0 đồng thời tạo ra 1 ngắt tràn, và triệu gọi thực hiện chương trình con phục vụ ngắt . HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

Hàm HAL_TIM_PeriodElapsedCallback trong khai báo ở thư viện HAL là hàm weak, có nghĩa là nó cần được code lại cụ thể ở chương trình.

Bài 6 PWM VỚI STM32 PWM VỚI STM32

PWM (Pulse Width Modulation) – Điều chế độ rộng xung/Băm xung: là phương pháp điều chỉnh giá trị điện áp trung bình ra tải như các thiết bị như động cơ, đèn LED,… từ đó có thể làm thay đổi công suất thiết bị (tốc độ động cơ, độ sáng của đèn,…). Điều này được thực hiện bằng cách thay đổi Duty Cycle của xung tín hiệu điện áp ra, là phương pháp dễ dàng và ít tốn kém hơn việc điều chỉnh các thơng số của dòng điện.

Một phần của tài liệu THỰC HÀNH LẬP TRÌNH NHÚNG NÂNG CAO LẬP TRÌNH STM32 (Trang 55 - 60)