BÀI TẬP MỨC ĐỘ 3Yêu cầu 1: Trình bày và vẽ sơ đồ kết nối phần cứng tối thiểu để vi điều khiển STM32 có thể hoạt động.... 3 Yêu cầu 2: Trong báo cáo trình bài rõ và chi tiết cách thiết lậ
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TPHCM
KHOA CÔNG NGHỆ ĐIỆN TỬ
19519351 Hoàng Trần Thiện
1download by : skknchat@gmail.com
Trang 2BÀI TẬP MỨC ĐỘ 3
Yêu cầu 1: Trình bày và vẽ sơ đồ kết nối phần cứng tối thiểu để vi điều khiển STM32 có thể hoạt động 3 Yêu cầu 2: Trong báo cáo trình bài rõ và chi tiết cách thiết lập và các chức năng trong phần mềm CubeMX Cấu hình chức năng phải vừa đủ và sử dụng, không cấu hình các chân và chức năng không sử dụng 3 Yêu cầu 3: Trong báo cáo trình bày rõ lưu đồ giải thuật và mã nguồn của trương trình điều khiển 8 Yêu cầu 4: Sử dụng phần mềm Proteus để vẽ mạch mô phỏng và nạp chương trình vào vi điều khiển Thực hiện cho chạy thử trên mạch mô phỏng Quay video clip minh chứng kết quả thực hiện, tải lên youtube và ghi liên kết vào báo cáo Trong video clip phải có mô tả thí nghiệm, kết quả thú nghiệm và nhạn xét về kết quả thí nghiệm 19 Link youtube: 19
2download by : skknchat@gmail.com
Trang 3Yêu cầu 1: Trình bày và vẽ sơ đồ kết nối phần cứng tối thiểu để vi điều khiển STM32 có thể hoạt động.
Sơ đồ nguyên lý kết nối phần cứng tối thiểu.
3download by : skknchat@gmail.com
Trang 4Yêu cầu 2: Trong báo cáo trình bài rõ và chi tiết cách thiết lập và các chức năng trong phần mềm CubeMX Cấu hình chức năng phải vừa đủ và sử dụng, không cấu hình các chân và chức năng không sử dụng.
Bước 1: Khởi động phần mềm CubeMX.
4download by : skknchat@gmail.com
Trang 5Bước 2: Chọn STM32F103C6
Bước 3: Chọn mạch nạp SWDIO cho vi điều khiển Chân PA13 và
chân PA14 được dùng để kết nối.
5download by : skknchat@gmail.com
Trang 6Bước 4: Chọn bộ thạch anh LSE ( thạch anh trong ) cho vi điều
khiển, chọn chân thạch anh bằng cách vào System core => RCC => Low Speed Clock ( HSE ) => Crytal/Ceramic Resonator Chân
PC14 và chân PC15 được khai báo.
6download by : skknchat@gmail.com
Trang 7Bước 5: Cấu hình chức năng UART ta vào connectivity chọn UART1
chọn chế độ Ansynchnorous Chân PA9 và PA10 được khai báo.
- Chọn thông số cơ bản ta vào Parameter Settings hiệu chỉnh Baud Rate:
115200 Word length: 0 Bits Parity: none Stop Bits: 1
Chân PA10 là UART1_RX và Chân PA9 là UART1_TX.
7download by : skknchat@gmail.com
Trang 8- Ta vào NVIC Settings tích chọn chế độ ngắt UART1 (USART global interrupt)
Bước 6: Cấu hình chức năng ADC, khai báo ngõ vào ADC (mode) ta
chọn IN1 tương ứng với chân PA1.
-Kiểu lưu trữ dữ liệu (data aglignment): chọn right alignment.
8download by : skknchat@gmail.com
Trang 9Bước 7: Thiết lập tốc độ tần số cho vi điều khiển chọn tần số 8MHz tại HSI.
Bước 8 : Tạo Project đặt tên là BT_test chọn Toolchain/IDE là
SW4STM32 Sau khi hoàn tất việc cấu hình, từ phần mềm CubeMX chung ta
sẽ nhấp chuột vào nút “Generate code”.
9download by : skknchat@gmail.com
Trang 10Yêu cầu 3: Trong báo cáo trình bày rõ lưu đồ giải thuật và mã nguồn của trương trình điều khiển.
LƯU ĐỒ GIẢI THUẬT
10download by : skknchat@gmail.com
Trang 11BƯỚC 1 BƯỚC 2
11download by : skknchat@gmail.com
Trang 12BƯỚC 3 BƯỚC 4
12download by : skknchat@gmail.com
Trang 13BƯỚC 5 BƯỚC 6
13download by : skknchat@gmail.com
Trang 14BƯỚC 7 BƯỚC 8
14download by : skknchat@gmail.com
Trang 15BƯỚC 9
15download by : skknchat@gmail.com
Trang 16BƯỚC 10
16download by : skknchat@gmail.com
Trang 17CHƯƠNG TRÌNH NGẮT
17download by : skknchat@gmail.com
Trang 18CHƯƠNG TRÌNH KHỞI TẠO LCD
18download by : skknchat@gmail.com
Trang 1919download by : skknchat@gmail.com
Trang 2020download by : skknchat@gmail.com
Trang 21* <h2><center>© Copyright (c) 2021 STMicroelectronics.
* All rights reserved.</center></h2>
#include "stdbool.h"
/* USER CODE END Includes */
/* Private typedef -*//* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define -*//* USER CODE BEGIN PD */
/* USER CODE END PD */
21download by : skknchat@gmail.com
Trang 22/* Private macro - *//* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables - */ADC_HandleTypeDef hadc1;
TIM_HandleTypeDef htim2;
UART_HandleTypeDef huart1;
/* USER CODE BEGIN PV */
//unsigned char thien[];
uint8_t data[30];
uint8_t data_T[1];
bool flag_R=0;
uint8_t flag_step_1 = 0, flag_step_2 = 0,flag_step_3 = 0;
uint8_t flag_step_4 = 0, flag_step_5 = 0,flag_step_6 = 0;
uint8_t flag_step_7 = 0, flag_step_8 = 0,flag_step_9 = 0;
/* USER CODE END PV */
/* Private function prototypes - */void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_ADC1_Init(void);
static void MX_USART1_UART_Init(void);
static void MX_TIM2_Init(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code - */
22download by : skknchat@gmail.com
Trang 23/* USER CODE BEGIN 0 */
void lcd_write_4bit(uint8_t rs,uint8_t data)
{
HAL_GPIO_WritePin(RS_GPIO_Port,RS_Pin,rs);
HAL_GPIO_WritePin(EN_GPIO_Port,EN_Pin,1);
HAL_GPIO_WritePin(D7_GPIO_Port,D7_Pin,((data>>3)&0x01));HAL_GPIO_WritePin(D6_GPIO_Port,D6_Pin,((data>>2)&0x01));HAL_GPIO_WritePin(D5_GPIO_Port,D5_Pin,((data>>1)&0x01));HAL_GPIO_WritePin(D4_GPIO_Port,D4_Pin,((data>>0)&0x01));HAL_Delay(1);
Trang 25int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
25download by : skknchat@gmail.com
Trang 26flag_step_1 = 1;
}
//step 2
if((flag_step_1 == 1) && (flag_step_2 == 0)){
if((flag_R== 1 ) && (data[0] == 'A') ){
flag_step_5 = 1;
26download by : skknchat@gmail.com
Trang 27//step 6
if((flag_step_5 == 1) && (flag_step_6 == 0))
{ if((flag_R== 1 ) && (data[0] == 'B') ){
flag_step_6 = 1;
}}//step 8
if( (flag_step_6 == 1) && (flag_step_8 == 0)){
flag_step_10 = 1 ;}
// step 7
if((flag_step_5 == 1) && (flag_step_7 == 0)){
if((flag_R== 1 ) && (data[0] == 'D') ){
flag_step_7 = 1;
27download by : skknchat@gmail.com
Trang 28}}// step 10
if( (flag_step_7 == 1) && (flag_step_10 ==0)){
lcd_clear_display();
lcd_gotoxy(0,7);
display_text("status5",7);
HAL_UART_Transmit(&huart1,(uint8_t*)"05\r\n" ,3, 1000);
flag_step_10 = 1;
}// kiem tra
Trang 29RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
Trang 30/* USER CODE BEGIN ADC1_Init 0 */ /*
USER CODE END ADC1_Init 0 */
ADC_ChannelConfTypeDef sConfig =
{0}; /* USER CODE BEGIN ADC1_Init 1
*/ /* USER CODE END ADC1_Init 1 */
/* USER CODE BEGIN ADC1_Init 2 */ /
* USER CODE END ADC1_Init 2 */
30download by : skknchat@gmail.com
Trang 31/* USER CODE BEGIN TIM2_Init 0 */
/* USER CODE END TIM2_Init 0 */
TIM_ClockConfigTypeDef sClockSourceConfig =
{0}; TIM_MasterConfigTypeDef sMasterConfig = {0};
/* USER CODE BEGIN TIM2_Init 1 */
/* USER CODE END TIM2_Init 1 */
Trang 32}
/* USER CODE BEGIN TIM2_Init 2 */
/* USER CODE END TIM2_Init 2 */
/* USER CODE BEGIN USART1_Init 0 */ /
* USER CODE END USART1_Init 0 */ /*
USER CODE BEGIN USART1_Init 1 */ /*
USER CODE END USART1_Init 1 */
/* USER CODE BEGIN USART1_Init 2 */ /
* USER CODE END USART1_Init 2 */
Trang 33static void MX_GPIO_Init(void)
/*Configure GPIO pins : D4_Pin D5_Pin D6_Pin D7_Pin
/* USER CODE BEGIN 4 */
/* USER CODE END 4 */
Trang 34/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error
*/
void assert_failed(uint8_t *file, uint32_t line)
{
/* USER CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number,
tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* USER CODE END 6 */
mô phỏng Quay video clip minh chứng kết quả thực hiện, tải lên
youtube và ghi liên kết vào báo cáo Trong video clip phải có mô tả thí nghiệm, kết quả thú nghiệm và nhạn xét về kết quả thí nghiệm.
Link youtube: https://youtu.be/wLCv6PKgkxU
34download by : skknchat@gmail.com