Professional Documents
Culture Documents
UART
UART
UART
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;
}
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