STM32F411VET6 (Lập trình ARM)

Em đang tìm hiểu về lập trình ARM và đang chơi với nó em xài cubemx để lập trình và học làm theo video trên mạng! Em đang có 1 thắc mắc là APB2 và APB1. Tụi nó có 2 xung max khác nhau. APB2 = 100MHz và APB1 = 50 MHz. Em thường thiết lập cho 2 clock nó luôn là max. Nhưng em xem video làm theo thì anh hướng dẫn luôn cho 2 clock này = nhau! Vấn đề là em làm tới timer em vẫn thiết lập 2 clock đều là max vậy thì có gì xảy ra không?
2. Em hơi vip tiếng anh nên có cái là tìm hiểu về sơ đồ mạch của board thì mình gọi nó là gì!

Theo video này thì có khúc anh ấy show ra 1 cái ảnh gần cuối chương trình giải thích tại sao thiết lập prescaler là 42MHz thì cái ảnh đó gọi theo tiếng anh là gì vậy!
Mong các anh chị giúp đỡ!
@Duong_Act Anh ơi cứu em với! Nếu anh không rãnh chỉ cần cho em cần câu thôi em đi câu cá! Cảm ơn anh nhiều! … Mà em thích cần câu hơn là con cá … :smile:

Khi dùng tốc độ clock khác nhau thì các modul hoạt động nhanh chậm khác nhau. Nếu yêu cầu đáp ứng đúng thời gian thì mỗi kiểu cấu hình sẽ có các thông số khác nhau.
Việc cấu hình tốc độ APB này tuỳ thuộc vào cách xử lý, mục đích, giải thuật của mỗi người.

Sơ đồ của board gọi là sơ đồ nguyên lý, tiếng anh gọi là schematic.

Phần cuối a chưa rõ em muốn hỏi cái gì ?
Prescaler : bộ chia trước.
Postscaler: bộ chia sau.
PLL : phase lock loop : vòng khoá pha thường dùng để nhân tần số.

1 Like

Em cảm ơn anh! Em mới mò ra đc là timer 2 của nó sài APB1 nên thiết lập sau thì 2 thằng đó không có liên quan vậy mà xem video cảm giác hoang mang dễ sợ! nhìn thư viện của nó không mà muốn oải nhưng h đọc nhiều bắt đầu thấy quen quen rồi nên cũng đỡ bở ngỡ! Mà prescaler và postscaler phân biệt sau anh! Còn phần cuối thì nhờ vào sự mê rủi em mò ra đc sơ đồ clock của nó mới biết : block diagram là cái em cần tìm để hiểu timer

Học cái này muốn dễ hiểu thì phải có datasheet của con đó.


Sơ đồ khối của nó trang 19 em nhìn vào sẽ thấy dễ hiểu hơn.

Postscaler và Prescaler thường liên quan đến timer. Tức là em muốn con timer đó sinh ngắt với tần số thấp trong khi xung clock của nó rất cao thì dùng 1 hoặc cả 2 cách như sau ( tuỳ vào phần cứng có hỗ trợ không).
Người ta đặt 1 bộ chia tần số giữa nguồn clock và timer. Tần số bị giảm trước khi đến timer thì bộ chia đó gọi là bộ chia trước - prescaler.
Ở phía sau của timer người ta đặt 1 bộ chia khác để làm giảm tần số (ngắt) thì đó gọi là bộ chia sau - postscaler.

Em có tham gia 1 nhóm về lập trình ARM họ nói là nên lập trình từ đầu ko dùng cube! Giờ thì em mới hiểu tại sau vì em đang dính cái lỗi là ko enable TIM2 global interrupt --> code phát sinh trước của em thiếu phải phát sinh lại! Nhưng em bên IT mà ko có cube thì như là mù. Vậy em phải làm sau mà không phát sinh mà vẫn sài code cũ?

Em có thể học cách cấu hình với thư viện chuẩn CMSIS. Hoặc đọc note (cái link anh gửi) để tự cấu hình từng thanh ghi (nhưng không nên làm theo cách này).

Việc cấu hình ARM là khá khó với người mới do cấu trúc ARM nó khá đồ sộ.
Thực chất cubemx sẽ trực quan việc cấu hình và sinh code cấu hình project ban đầu. Sau đó em vẫn phải tự code chức năng với CMSIS.
Em nên tìm hiểu sơ đồ ARM, cách cấu hình bằng hàm trong CMSIS. Ổn rồi thì dùng hay không dùng cubemx cũng được.

Cảm ơn anh! em sẽ đọc từ từ rồi cũng hết!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?