báo cáo thực tập vi xử lý 1 viết chương trình chớp tắt led đơn ở chân gpioa10

23 3 0
báo cáo thực tập vi xử lý 1 viết chương trình chớp tắt led đơn ở chân gpioa10

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCMKHOA ĐÀO TẠO CHẤT LƯỢNG CAO---BÁO CÁO THỰC TẬP VI XỬ LÝGVHD: Huỳnh Quang Duy SVTH: Nguyễn Toàn Quân MSSV: 201464031.

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCMKHOA ĐÀO TẠO CHẤT LƯỢNG CAO

-BÁO CÁO THỰC TẬP VI XỬ LÝGVHD: Huỳnh Quang Duy

SVTH: Nguyễn Toàn Quân MSSV: 20146403

1

Trang 2

Bài tập 1: Viết chương trình chớp tắt led đơn ở chân GPIOA10

/* USER CODE BEGIN 2 */

RCC->AHB1ENR |= (1<<0); //Clock for GPIOB GPIOA->MODER |= (1<<(10*2)); // GPIO output A0 GPIOA->OTYPER &= ~(0<<10); //push - pull GPIOA->OSPEEDR |= (0<<20); //medium speed /* USER CODE END 2 */

/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }

/* USER CODE END 3 */ }

Trang 3

Bài 2: Viết chương trình đọc nút nhấn P1 và chớp tắt led đơn

/* USER CODE BEGIN 2 */

RCC->AHB1ENR |= (1<<0); //Clock for GPIOB RCC->AHB1ENR |= (1<<3); //Clock for GPIOD GPIOA->MODER |= (1<<(10*2)); // GPIO output A0 GPIOA->OTYPER &= ~(0<<10); //push - pull GPIOA->OSPEEDR |= (0<<20); //medium speed

Trang 4

/* USER CODE BEGIN 3 */ }

/* USER CODE END 3 */ }

Bài 3: Viết chương trình đọc nút nhấn và thực hiện theo yêu cầu sau - Nhấn (không giữ) nút nhấn lần 3n, 3 led dịch với chu kỳ 0.1s

-Nhấn (không giữ) nút nhấn lần 3n+1, 3 led dịch với chu kỳ 1s.-Nhấn (không giữ) nút nhấn 3n+2, tắt cả 3 led.

/* USER CODE BEGIN 2 */

RCC->AHB1ENR |= (1<<1); //Clock for GPIOB RCC->AHB1ENR |= (1<<4); //Clock for GPIOE RCC->AHB1ENR |= (1<<3); //Clock for GPIOD

GPIOB->MODER |= (1<<0)|(1<<2)|(1<<4); // GPIO output B0 //GPIOB->OTYPER;

GPIOB->OTYPER &= ~(1<<0); //push - pull GPIOB->OSPEEDR |= (1<<0); //medium speed

Trang 6

/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */

Trang 10

/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }

/* USER CODE END 3 */ }

Bài 5: Viết chương trình theo yêu cầu sau, 16 led kết nối:

-> 8 led dịch từ phải qua trái -> 8 led dịch từ trái qua phải -> 8 led chớp tắt xen kẽ -> 8 led sáng dần từ trái qua phải -> 8 led sáng dần từ phải qua trái -> 8 led sáng dần từ trong ra ngoài -> 8 led sáng dần từ ngoài vào trong -> 8 led cùng chớp tắt

/* USER CODE BEGIN 2 */ RCC->AHB1ENR|= (1<<1); RCC->AHB1ENR|= (1<<4); RCC->AHB1ENR|= (1<<3); GPIOD->MODER = 0<<(11*2);

Trang 16

/* USER CODE BEGIN 3 */

Trang 18

/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }

/* USER CODE END 3 */ }

Bài tâp 7: Viết chương trình nhấn nút thực hiện yêu cầu sau- Nhấn nút P1 (không giữ) băng tải quay

- Nhấn nút P2 (không giữ) băng tải dừng

#define RCC_AHB1ENR (*((unsigned int*)0x40023830)) #define GPIOB_MODER (*((unsigned int*)0x40020400)) #define GPIOB_IDR (*((unsigned int*)0x40020410)) #define GPIOB_ODR (*((unsigned int*)0x40020414))

int main(void)

Trang 19

// Enable GPIOB clock

RCC_AHB1ENR |= 0x02; // bit 1: GPIOB clock enable

// Configure GPIOB0 and GPIOB1 as input pins

GPIOB_MODER &= ~(0x03 << 2*0); // Clear mode for GPIOB0 GPIOB_MODER &= ~(0x03 << 2*1); // Clear mode for GPIOB1

// Start conveyor belt

GPIOB_ODR |= (1 << 5); // Set bit 5 to high }

// Check if button P2 is pressed if ((GPIOB_IDR & (1 << 1)) == 0) {

// Stop conveyor belt

GPIOB_ODR &= ~(1 << 5); // Set bit 5 to low }

}

Trang 20

Bài tập 8: Viết chương trình xử lý tiens hiệu trả về từ cảm biến S1, S2 theo yêu cầu sau-Nếu S1 bị ngừng tác động, chớp tắt Led đơn với chu kỳ 500ms

-Nếu S2 bị ngừng tác động, chớp tắt Led đơn với chu kỳ 1000ms

/* USER CODE BEGIN 2 */

Trang 21

while (1) {

/* USER CODE END WHILE */ //chop tat led su dung cam bien

Bài tâp 9: Viết chương trình xử lý tín hiệu trả về từ cảm biến S1, S2 theo yêu cầu sau

- Nếu S1 bị ngừng tác động, Băng tải quay

Trang 22

- Nếu S2 bị ngừng tác động, Băng tải dừng

#define RCC_AHB1ENR (*((volatile unsigned long*)0x40023830)) // Ðia chi thanh ghi de bat tín hieu clock cho GPIO

#define GPIOA_MODER (*((volatile unsigned long*)0x40020000)) // Ð?a chi thanh ghi de cau hình chân GPIO

#define GPIOA_IDR (*((volatile unsigned long*)0x40020010)) // Ð?a chi thanh ghi de doc giá tri tu chân GPIO

#define GPIOA_ODR (*((volatile unsigned long*)0x40020014)) // Ð?a chi thanh ghi de ghi giá tri vào chân GPIO

#define S1_Pin (1 << 0) // Chân GPIO dùng de ket noi voi cam bien S1 #define S2_Pin (1 << 1) // Chân GPIO dùng de ket noi voi cam bien S2 #define Motor_Pin (1 << 2) // Chân GPIO dùng de dieu khien bang tai

// clock GPIO

RCC_AHB1ENR |= (1 << 0);

// C?u hình chân GPIOA0 và GPIOA1 là dau vào (input) de ket noi voi cam bien S1 và S2 GPIOA_MODER &= ~(3 << 0); // GPIOA0

GPIOA_MODER &= ~(3 << 2); // GPIOA1

// Cau hình chân GPIOA2 là dau ra (output) de dieu khien bang tai GPIOA_MODER &= ~(3 << 4); // GPIOA2

GPIOA_MODER |= (1 << 4); // Output mode

while(1) {

Trang 23

// Ðoc giá tri tu cam bien S1 và S2

int s1_value = (GPIOA_IDR & S1_Pin) ? 1 : 0; int s2_value = (GPIOA_IDR & S2_Pin) ? 1 : 0;

// Neu cam bien S2 bi ngung tác dong, bang tai dung GPIOA_ODR &= ~Motor_Pin;

} } }

Ngày đăng: 20/04/2024, 09:36

Tài liệu cùng người dùng

Tài liệu liên quan