UART

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

Truyền UART sử dụng kit STMF103C8T6

Sử dụng Cube MX để cấu hình các chân chức năng:


Gửi data từ VĐK ra ngoài:
Char str[] = “Hello World\n\n”;
HAL_UART_Transmit(&huart1, (uint8_t *)&str, sizeof(str), 1000); // timeout
1000ms

Sử dụng printf:
Printf(“Hello World\r\n”);
_ARMABI int fputc(int c, FILE * stream){
HAL_UART_Transmit(&huart1, (uint8_t *)&str, 1, 100);
Return 0;
}

Cấu hình PWM trên Kit STM


Sử dụng cube MX để cấu hình TIM2: ở đây sử dụng 4 kênh PWM Generation từ CH1
đến CH4.
Xung clock cấp cho APB2 là 8MHz như vậy clock cấp cho TIM2 cũng là 8MHz

Prescaler là bộ chia trước, ở đây clock cấp vào là 8MHz để lấy được 1MHz thì giá trị của
bộ chia trước là 8 giá trị(tính luôn cả giá trị 0 nên điền vào là 7).
Chế độ đếm là đếm lên: Up
Counter Period là chu kì PWM ở đây là 1000 giá trị, nhập 999(tạo xung 1KHz)
Tạo xung PWM với chu kì có định thì nhập giá trị tương ứng.
Sau khi cấu hình xong thì generate code:
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);
/* USER CODE END 2 */
Gọi hàm Start để bắt đầu tạo PWM ở các kênh.
Để có thể thay đổi được chu kì tạo PWM của các kênh sử dụng đoạn lệnh:
/*
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANEL_X, biến);
*/
Máy tính gửi data thông qua UART xuống VĐK mỗi khi nhấn nút SET:
Chuỗi dữ liệu gửi xuống: giá trị “Kp|Ki|Kd|Set_point”
Ví dụ: “3.23|2.11|0.01|180”, “12.21|5.3|1.12|90”
Khi gửi gửi data xuống thì VĐK sẽ tách chuỗi lấy giá trị:
Tương ứng với “3.23|2.11|0.01|180” thì:
Kp = 3.32
Ki = 2.11
Kd = 0.01
Set_point = 180
VĐK liên tục gửi dữ liệu lên máy tính thông qua UART
Dữ liệu gửi lên là giá trị góc hiện thời, ví dụ như “123”, “12”, “359”
Dữ liệu gửi lên máy tính thông qua UART sẽ được giám sát và vẽ đáp ứng

Bộ điều khiển PID:


Thông số điều khiển Kp, Ki, Kd
Tcs là thời gian lấy mẫu của bộ điều khiển

You might also like