Professional Documents
Culture Documents
Using the KIT S32K144, the LED blinking effect can be created with a frequency of 40,000,000 ticks,
which corresponds to a 1-second cycle. Two push buttons, SW2 and SW3, are utilized.
SW2 is used to cycle through the LED effects: Green -> Red -> Blue -> Green -> ...
PCCn[PCC_PORTD_INDEX] thì với PCC_PORTD_INDEX là chỉ số đại diện cho chỉ số của PORTD trong
thanh ghi PCC. Và chỉ số này là 76
Vì offset của PCC_PORTD là 130h tính từ vị trí bắt đầu của thanh ghi PCC. Vì kích thước của 1 đối tượng
trong thanh ghi PCC là 4 byte nên chỉ số tương ứng của thanh ghi PCC_PORTD sẽ là:
PCC_PCCn_CGC_MASK
Cấu hình cho PortD để sử dụng cho chân GPIO (General-Purpose Input/Output) dùng cho Green Led
bằng cách dịch trái 16 bit để enable chân số 16 tương ứng với Green Led
Tương ứng như vậy sẽ dịch trái 15 bits tương ứng với RED LED và 0 bits tương ứng với LED BLUE.
PORTD->PCR[16] |= PORT_PCR_MUX(1); /* Port D0: MUX = ALT1, GPIO (to blue LED on EVB) */
Cấu hình chế độ đa chức năng (multiplexing) cho chân GPIO 16 trên PORTD
Câu lệnh trên có ý nghĩa là thực hiện phép toán bitwise OR giữa giá trị hiện tại của thanh ghi PCR[16] và
giá trị cấu hình mới được tạo ra bởi PORT_PCR_MUX(1) ( với Alternative 1 dùng cho chân GPIO)
Tại đây PORT_PCR_MUX_MASK được define với giá trị tương ứng là 0x700 được biểu diễn tương ứng
trong hệ nhị phân là 011100000000, điều này tương ứng với 3 bit của trường MUX trong thanh ghi PCR,
các bít này đại diện cho các tùy chọn chức năng của chân GPIO.
Macro PORT_PCR_MUX_SHIFT được định nghĩa với giá trị 8u( 8 với kiểu unsigned) tương ứng với số
lượng bit cần dịch trái để định vị trường MUX trong thanh ghi PCR.
Đầu tiên giá trị x sẽ được chuyển đổi thành kiểu uint32_t(32-bit unsigned integer) bằng phần ((uint32)
(x)).
Sau đó giá trị này sẽ dịch trái << 8bit để tương ứng với trường MUX trong thanh ghi PCR. -> 0x100
Tiếp theo kết quả của phép dịch trái sẽ dùng toán tử bitwise AND để lấy 3 bit tương ứng của trường
MUX
Lấy đảo của ~(1<<12) mục đích để bit thứ 12 của thanh ghi PDDR là không, chỉ định rằng chân GPIO 12 là
chân đầu vào.
WDOG-WATCHDOG
WDOG->CS = 0x00002100; /* Disable watchdog */Vô hiệu hóa watch bằng cách gán giá trị
0X00002100 vào thanh ghi CS
}
Trước khi vào main phải vô hiệu hóa watchdog bởi vì:
- Tránh reset không mong muốn: đảm bảo hệ thống không bị treo khi có lỗi xảy ra và có thể tự
động khởi động lại trong trường hợp xảy ra lỗi (trong trường hợp hệ thống không được cập nhật
đúng thời gian). Bằng cách tắt watchdog trước khi thực hiện các tác vụ cấu hình khác, ta đảm
bảo rằng hệ thống không bị reset không mong muốn trong quá trình khởi tạo.