Bài 04: TẠO HÀM DELAY TUYỆT ĐỐI VỚI SYSTEM TICK TIMER STM32F1

posted in: Vi điều khiển | 0

1. System tick và ứng dụng

  • Với chức năng này của system timer, chúng ta có thể cấu hình và kích hoạt để tạo ra sự kiện ngắt SysTick định kỳ mỗi khi bộ đếm đếm ngược về giá trị 0, từ đó tạo ra hàm delay tuyệt đối thay thế các hàm delay tương đối sử dụng vòng lặp while và for trước đây.




2. Lập trình với thư viện chuẩn của ST

  • Lệnh cấu hình ngắt system tick
SysTick_Config(SystemCoreClock/1000);

Trong đó SystemCoreClock chính là tần số hoạt động của core và 1000 là tần số để thực hiện hàm phục vụ ngắt.

  • Hàm delay tuyệt đối 1 ms
void Delay_ms(uint32_t time)
{
 TimingDelay = time;						
 while(TimingDelay!=0);			

}
  • Chương trình phục vụ ngắt Sys_tick
void SysTick_Handler(void)
{
 TimingDelay--;
}

Hàm này sẽ được thực hiện mỗi khi giá trị bộ đếm xuống 0 và được nhận biết bằng cờ tràn.

  • Chương trình trong hàm main ứng dụng hàm delay tuyệt đối nhấp nháy led
int main()
{
  SysTick_Config(SystemCoreClock/1000);	// cau hinh systick ngat moi 1ms
  GPIO_Config();
  while (1)
  {
   GPIO_WriteBit(GPIOC,GPIO_Pin_13,1);
   Delay_ms(1000);
   GPIO_WriteBit(GPIOC,GPIO_Pin_13,0);
   Delay_ms(1000);
  }
}

Link tải code mẫu

Trả lời

Email của bạn sẽ không được hiển thị công khai.