xaxa9ztb Systick delay với NUC220

xaxa9ztb

Kỹ sư
Thành viên BQT
#1
Lõi Cortex M0 cung cấp 1 bộ định thời hệ thống tích hợp nhằm tạo ra một thời gian chuẩn cho vi điều khiển.
Đặc điểm của SysTick là 1 bộ đếm xuống (decrement) 24bit, giá trị đếm được tự động nạp lại khi bộ đếm về 0 (wrap-on-zero counter).
Khi SysTick được bật, nó sẽ tự động đếm xuống từ giá trị nằm trong thanh ghi SysTick Current Value Register (SYST_CVR) tới 0 và sẽ tự động nạp lại giá trị trong thanh ghi SysTick Reload Value Register (SYSR_RVR) cho một chu trình mới.
Đối với chip NUC220 nhà sản xuất đã viết sẵn một hàm SYS_SysTickDelay() để người dùng có thể khai thác
khi khởi tạo hệ thống, chúng ta cần khai báo xung cho Systick bằng việc gán giá trị cho CyclesPerUs . Đây là giá trị được nsx Nuvoton define sẵn cho hàm SYS_SysTickDelay(), tức là 1 cycles là 1us (micro sec), hàm delay theo us
Screenshot - 7_17_2014 , 6_19_25 PM.png

Ngoài ra chúng ta có thể tự viết hàm cho systick bằng cách sử dụng hàm SysTick_Config() để tính lại số xung cho systick và viết lại hàm ngắt SysTick_Handler(void)
ví dụ:
Screenshot - 7_17_2014 , 6_25_15 PM.png

Ở đây tôi dùng luôn Hàm SYS_SysTickDelay() để viết hai hàm delay_us và delay_ms sau khi khai báo CyclesPerUs = PLL_CLOCK / 1000000;
Screenshot - 7_17_2014 , 6_27_16 PM.png
 

huunho

Thạc sỹ
#2
cho mình hỏi bạn có thể dùng asm để viết cho core M0 không vây?
 

mta_cdt

Super Moderator
Thành viên BQT
#7
Không được học hợp ngữ mà hãng cũng ko hỗ trợ code bằng hợp ngữ.
 

Quảng cáo Google