Bài 04: TIMER BASE VỚI MXCUBE SỬ DỤNG STM32F303CC
- Giới thiệu sơ lược về EXTI.
- Timer clock.
- Prescaler.
- Auto Reload Value.
- FCK_CNT: tần số sau bộ chia.
- fCK_PSC: tần số clock đầu vào cấp cho timer.
- PSC: chính là giá trị truyền vào được lập trình bằng phần mềm.
- Ftimer : là giá trị cuối cùng của bài toán, đơn vị là hz.
- F system : tần số clock hệ thống được chia cho timer sử dụng, đơn vị là hz.
- PSC : giá trị nạp vào cho bộ chia tần số của timer. Tối đa là 65535.
- Period : giá trị bộ đếm nạp vào cho timer. Tối đa là 65535.
- Tạo project với MXCUBE.
- New project . Cửa sổ mới được mở ra. Chọn loại MCU theo tên hoặc theo họ, loại package… Ở đây mình nhớ tên luôn nên gõ vào cho nhanh STM32F303CC.
STM32f303CC có tất cả 13 timer nhưng trong đó đã bao gồm 1 systick timer, 2 watchdog timer. Vậy có 10 timer dùng cho các chức năng như ngắt, timer base, PWM, Encoder, Input capture…. Trong đó TIM1 và TIM8 là Timer đặc biệt, chuyên dụng cho việc xuất xung với các mode xuất xung, các mode bảo vệ đầy đủ hơn so với các timer khác. TIM1, TIM2, TIM3, TIM4, TIM8 là các timer có đầy đủ 4 channel còn các timer còn lại là timer nội hoặc không đầy đủ các channel.
Có 3 vấn đề về thanh ghi cơ bản cần tìm hiểu trong bài này đó là :
Prescaler là bộ chia tần số của timer. Bộ chia này có giá trị tối đa là 16 bit tương ứng với giá trị nạp vào là 65535. Các giá trị này có thể được thay đổi và điều chỉnh bằng lập trình. Tần số sau bộ chia này sẽ được tính là:
Auto Reload value là giá trị bộ đếm tối đa có thể được điều chỉnh để nạp vào cho timer. Giá trị bộ đếm này được cài đặt tối đa là 32 bit tương ứng với giá trị nạp vào là 4294967295. Tuy nhiên chỉ có timer 2 có được giá trị này, các timer khác đều có tối đa là 16 bit tương ứng với giá trị nạp vào là 65535. Từ các thông số trên ta rút ra công thức cần tính cuối cùng đó là:
Ngắt tràn timer: khi giá trị đếm của bộ đếm timer(thanh ghi CNT) vượt qua giá trị của Auto Reload Value thì cờ báo tràn sẽ được kích hoạt. Trình phục vụ ngắt tràn sẽ xảy ra nếu được cấu hình cho phép trước đó.
Vd: chớp tắt led với chu kì 2s, 1 giây sáng, 1s tắt trên chân PB9, sử dụng ngắt tràn timer1.
