Vậy là đã qua 2 bài viết với STM32CubeMonitor, các bạn đã biết cách để đọc dữ liệu và ghi dữ liệu xuống dưới kit STM32F4 discovery thông qua những hình minh họa trực quan sinh động sướng mắt rồi, không biết anh em có còn thắc mắc gì không nhỉ ? Nếu không hôm nay mình qua bài mới, đọc ghi trực tiếp thanh ghi ngoại vi
Đọc ghi vào địa chỉ
Như chúng ta đã biết thì tất cả các địa chỉ của thanh ghi đều có thể truy cập được, tuy nhiên một số thanh ghi sẽ không có biến ở trong file elf. Vậy làm thế nào mà chúng ta có thể đọc nó mà không có tên cụ thể ?
Xét một ví dụ ở kit F407 discovery chúng ta có schematic như sau
4 LED có sẵn trong đó 2 LED gắn với chân PD12 màu xanh lá, PD13 màu cam.
Những LED này sẽ ON khi trạng thái I/O của nó là 1 và ngược lại
GPIOD base address là 0x40020C00
Thanh ghi ODR sẽ có offset 0x14
, lowest byte của thanh ghi ODR là 0x40020C14
Ta sẽ có bảng để control value output của các LED thông qua các thanh ghi như sau
Green LED PD12 | Orange LED PD13 | ODR(bin) | ODR(hex) | ODR(dec) |
---|---|---|---|---|
ON | ON | 0b11000000000000 | 0x3000 | 12288 |
OFF | ON | 0b01000000000000 | 0x1000 | 4096 |
ON | OFF | 0b10000000000000 | 0x2000 | 8192 |
OFF | OFF | 0b00000000000000 | 0x0000 | 0 |
Thêm địa chỉ vào variable list
Click chuột vào myVarConfig
node để chỉnh lại thuộc tính như hình
Điều chỉnh source code CubeIDE
Các bạn cần khởi tạo GPIO lại như hình dưới với PD12 PD13 là GPIO_Output và comment out lại phần blink LED
Sau khi generate thì chương trình chính chỉ còn như này
// ....
while (1)
{
HAL_Delay(500);
//HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);
basicCounter += 1;
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
// ....
Kết quả
Giờ thì mở Dashboard lên và ấn vào Start Acquisition. Ta có thể điều khiển được LED tắt sáng thông qua dashboard, bạn có thể nhập các giá trị tương ứng vào ô GPIOD_ODR và quan sát LED sáng tắt trên kit.
Lưu ý: Nếu file elf của chúng ta có thay đổi do build lại code thì các bạn nhớ click vào node để update lại nhé
Kết
Vậy là chúng ta đã biết được cách để cấu hình flow, làm sao để kết nối được với board STM32 thông qua ST-Link, làm sao để lấy được tên variable name trong file excecutable. Làm sao để truy cập được bộ nhớ của STM32, cách đọc ghi sử dụng tên biến và sử dụng địa chỉ. Cách để kéo thả widget vào dashboard cũng như thêm các flow mới cũng như kết nối các node lại với nhau. Thế cũng là đủ xài để tiếp tục phát triển rồi anh chị em ơi.