You are on page 1of 7

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HCM

VI ĐIỀU KHIỂN
BÀI BÁO CÁO 10

NHÓM 11

Giảng viên : PHẠM QUANG TRÍ


Sinh viên : Nguyễn Văn Tín 18081111

TP.HCM – 2022
Bài tập mức độ 3:

1. Sơ đồ nguyên lí kết nối phần cứng tối thiểu dùng STM32:

2. Cách thiết lập chức năng trong phần mềm CubeMX:


Bước 1: Khởi động phần mềm CubeMX, tạo New Project và chọn mã số
STM32F103RCT6

Bước 2: Chọn mạch nạp JTAG


Bước 3: Chọn bộ giao động:

Bước 4: Chọn tần số giao động:


Bước 5: Cấu hình ADC

Bước 6: Cấu hình Timer chức năng phát xung PWM


Bước 7: Đặt tên cho Project và chọn nơi lưu trữ
3. Lưu đồ giải thuật:
Chương trinh con :

Chương trình chính:

4. Mã nguồn chương trình:


Chương trình chính :
void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
{
HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,1);
osDelay(222);
HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,0);
osDelay(111);
}
void StartTask02(void *argument)
{
/* USER CODE BEGIN StartTask02 */
/* Infinite loop */
for(;;)
{
HAL_ADC_Start(&hadc2);
for ( i=0; i<=73; i++)
{
asm("NOP");
}
adc1 = HAL_ADC_GetValue(&hadc2);
v2 = (adc1 * 33)/4096;
a = v2/10;
b = v2%10;
sprintf(&data[0],"Voltage: %d.%d \r\n",a,b);
HAL_UART_Transmit(&huart3,&data[0],sizeof(data),10);
osDelay(1000);
void StartTask03(void *argument)
{
/* USER CODE BEGIN StartTask03 */
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
int A;
/* Infinite loop */
for(;;)
{
HAL_ADC_Start(&hadc1);
for( i=0; i<14; i++)
{
asm("NOP");
}
A = HAL_ADC_GetValue(&hadc1);
P = A * 16000/4096;
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1,P);
osDelay(100);
}
1. Video minh chứng:
Link youtube: https://youtu.be/RubsGquWXqg

You might also like