Tải bản đầy đủ (.docx) (22 trang)

Sử dụng vi điều khiển STM32F103C8T6 thiết kế đồng hồ đo điện áp, hiển thị giá trị lên led 7 thanh dải đo từ 1 12v, sử dụng 1 nút nhấn chuyển thang đo giữa v và mv

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (473.14 KB, 22 trang )

BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG

BÁO CÁO
BÀI TẬP LỚN MƠN HỆ THỐNG NHÚNG
Đề Tài:
Sử dụng vi điều khiển STM32F103C8T6 thiết kế đồng hồ đo điện áp, hiển thị
giá trị lên led 7 thanh dải đo từ 1 - 12V, sử dụng 1 nút nhấn chuyển thang đo
giữa V và mV

Giảng viên hướng dẫn :

Thầy Nguyễn Ngọc Minh

Nhóm mơn học

:

04

Nhóm bài tập lớn

:

15

Sinh viên thực hiện

:

Nguyễn Đức Hiếu - B18DCDT075


Thiều Quang Trường -B18DCDT259
Nguyễn Việt Anh – B18DCDT011


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

MỤC LỤC

2


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

DANH MỤC HÌNH VẼ

DANH MỤC BẢNG

3


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

LỜI NĨI ĐẦU
Hiện nay, khoa học cơng nghệ ngày càng phát triển, vi điều khiển ARM đang

ngày càng thơng dụng và phát triển hơn. Trong đó STM32F1x là một loại rất phổ
biến được sử dụng trong nhiều loại thiết bị, nó cũng cung cấp các phương tiện để
liên kết với nhiều loại vi điều khiển khác. Dòng MCU STM32f1x do
STMicroelectronics tạo ra bao gồm lõi xử lí ARM Cortex-M3 32 bit và hỗ trợ các
ngoại vi thông dụng như I2C, SPI, RTC,… Ngơn ngữ lập trình vơ cùng dễ
sử dụng tương thích với ngơn ngữ C và thư viện rất phong phú và
được chia sẻ miễn phí. Chính vì những lý do như vậy nên ARM
hiện đang dần phổ biến và được phát triển ngày càng mạnh mẽ
trên toàn thế giới.
Trên cơ sở kiến thức đã học trong môn học: Kỹ thuật vi xử lý, hệ thống nhúng,
… Cùng với những hiểu biết của mình về các thiết bị điện tử, nhóm em đã quyết
định thực hiện đề tài: Sử dụng vi điều khiển STM32F103C8T6 thiết kế đồng hồ
đo điện áp, hiển thị giá trị lên led 7 thanh dải đo từ 1 - 12V, sử dụng 1 nút
nhấn chuyển thang đo giữa V và mV với mục đích để tìm hiểu thêm về ARM,
làm quen với các thiết bị điện tử,cách lập trình và nâng cao hiểu biết cho bản thân.
Trong q trình thực hiện có lẽ khó có thể tránh khỏi những thiếu sót, hạn chế vì
thế nhóm em rất mong có được sự góp ý và nhắc nhở từ thầy giáo để có thể hồn
thiện đề tài của mình.
Em xin trân thành cảm ơn!

4


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

PHẦN 1
TỔNG QUAN
I) Giới thiệu chung về board ARM STM32F103C8T6 V2

Board ARM STM32F103C8T6 là một trong những Kit cơ bản giành cho: kỹ sư, học
sinh, sinh viên, người mới bắt đầu nghiên cứu về lập trình nhúng, Board mạch sử dụng vi
điều khiển STM32F103C8T6 Arm Cortex-M3, Flash: 64 KB, SRAM: 20KB, hỗ trợ hầu
hết các kết nối: SPI, USART, I2C, I2S, CAN… Là trợ thủ đắc lực trong việc lập trình và
gỡ lỗi.

Hình 1. 1: Board ARM STM32F103C8T6












Module: STM32 Smart V2.0
Vi điều khiển: STM32F103C8T6
Nhà sản xuất: ST-Microelectronics
Core: ARM Cortex-M3
Xung nhịp: 72 Mhz
Flash: 64Kb
SRAM: 24Kb
Chip SPI Flash, W25X6, dung lượng 2Mb
Kết nối: SPI, UART, I2C, CAN,…
RTC độ chính xác cao
USB: 2.0, DMA


II) Giới thiệu về Led 7 thanh anode chung

5


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

Led 7 thanh hay còn được gọi là Led 7 đoạn, bao gồm 7 đoạn đèn Led được xếp lại
với nhau thành hình chữ nhật. Khi các đoạn lập trình để chiếu sang thì sẽ hiển thị chữ số
của hệ thập phân. Đơi khi có nhiều Led 7 thanh được nối với nhau để có thể hiển thị được
các số lớn hơn 2 chữ số.

Hình 1. 2: Hình ảnh Led 7 thanh anode chung

Với các đoạn Led trong màn hình đều được nối với các chân kết nối để đưa ra ngồi.
Các chân này được gán các kí tự từ a đến g, chúng đại diện cho từng Led riêng lẻ. Các
chân được kết nối với nhau để tạo thành 1 chân chung.
Chân pin chung hiển thị thường được sử dụng để xác định lạo màn hình Led 7 thanh
đó là loại nào. Có 2 loại Led 7 thanh được sử dụng đó là Cathode chung và Anode chung.

Hình 1. 3: Cấu tạo Led 7 thanh Anode chung

Bảng trang thái của Led 7 thanh Anode chung:
6


Học viện Cơng nghệ Bưu chính Viễn thơng


Decimal Digit

0
1
2
3
4
5
6
7
8
9

Khoa kỹ thuật Điện tử 1

Individual Segments Illuminated

a
0
1
0
0
1
0
0
0
0
0


b
0
0
0
0
0
1
1
0
0
0

c
0
0
1
0
0
0
0
0
0
0

d
0
1
0
0
1

0
0
1
0
1

e
0
1
0
1
0
1
0
1
0
1

f
0
1
1
1
1
0
0
1
0
0


g
1
1
0
0
0
0
0
1
0
0

Bảng 1: Bảng trạng thái của led 7 thanh anode chung

Các phương pháp điều khiển Led 7 đoạn:
1. Kết nối các chân điều khiển của Led trực tiếp với port của vi điều khiển.
2. Dùng quét Led.
3. Vẫn sử dụng quét Led nhưng dùng IC chốt dữ liệu để tiết kiệm các chân của vi

điều khiển.

7


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

PHẦN 2
SƠ ĐỒ NGUYÊN LÝ VÀ VIẾT CHƯƠNG TRÌNH

I) Sơ đồ nguyên lý
1) Sơ đồ khối

Khối mạch phân áp

BOARD ARM V2
(Khối MCU)

Nút nhấn chuyển
trạng thái

Khối hiển thị Led 7
đoạn

2) Chức năng các khối
Khối MCU: Có chức năng đọc giá trị điện áp và nút nhấn rồi gửi giá trị đo
được qua Led 7 đoạn.
• Khối phân áp: Đo dải đo của vdk STM32F103C8T6 chỉ đo được trong khoảng
0 – 3.6V nên để mở rộng dải đo, ta phải qua một mạch phân áp.
• Khối nút nhấn: Có chức năng chuyển đổi hiển thị giữa V và mV.
• Khối hiển thị: Dùng Led 7 đoạn để hiển thị giá trị điện áp.


3) Sơ đồ kết nối phần cứng
a) Khối mạch phân áp

8


Học viện Cơng nghệ Bưu chính Viễn thơng


Khoa kỹ thuật Điện tử 1

Hình 2. 1: Sơ đồ khối mạch phân áp

Điện áp cần đo được nối vào chân PA0 của vi điều khiển, do dải đo của ADC chỉ
nằm trong khoảng 0 – 3.6V nên để đo được mức điện áp cao hơn, ta cần phải mắc chúng
qua một mạch phân áp.
Ta có cơng thức mạch phân áp:

Từ u cầu đề bài ta có và . Giả sử ta tính được giá trị .
Từ đó ta có cơng thức tính điện áp (1)

b) Khối hiển thị Led 7 đoạn
Bảng kết nối chân của Led 7 đoạn với board ARM:
Board
ARM Pin

A

B

C

D

E

F


G

DP

7-Seg Led
Pin

PB
0

PB
1

PB
2

PB
3

PB
4

PB
5

PB
6

PB
7


1

2

3

4

PA1 PA2 PA3 PA4

Bảng 2: Bảng kết nối chân của Led 7 đoạn với board ARM

c) Nút nhấn chuyển trạng thái

9


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

Hình 2. 2: Nút nhấn chuyển trạng thái

Nút nhấn được nối với chân PC13 của vi điều khiển, tích cực ở mức thấp.
d) Sơ đồ kết nối chung cho các khối

Hình 2. 3: Sơ đồ kết nối chung

II) Viết chương trình C cho mạch

10


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

1) Cấu hình RCC
Trên STM32F103 có 2 bộ giao động thạch anh ngoại:
HSE (High Speed External): Bộ dao động ngoại tốc độ cao từ 4-16Mhz. Bộ
dao động cấp cho CPU hoạt động.
• LSE (Low Speed External): Bộ dao động ngoại tốc độ thấp 32.768KHz. Bộ
dao động này cấp cho bộ RTC có sẵn trên chip.
• HSI (High Speed Internal): Bộ giao động nội tốc độ cao 8MHz. Bộ này sẽ
cung cấp cho CPU trọng trường hợp khơng có HSE.
• LSI (Low Speed Internal): Bộ này dung để cấp cho Watchdog Timer có tần
số 40KHz.


Hình 2. 4: Clock tree

Cấu hình RCC sử dụng thạch anh nội (HSI) với tần số hoạt động lớn nhất là 64MHz
void Clock_Config(void)
{
/* RCC system reset */
RCC_DeInit();
/* HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* PCLK2 = HCLK */
11



Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

RCC_PCLK2Config(RCC_HCLK_Div1);
/* PCLK1 = HCLK */
RCC_PCLK1Config(RCC_HCLK_Div1);
/*enable HSI source clock*/
RCC_HSICmd(ENABLE);
/* Wait till PLL is ready */
while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET){}
/* Select HSI as system clock source */
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
/* Wait till HSI is used as system clock source */
while(RCC_GetSYSCLKSource() != 0x00) {}
}
2) Cấu hình GPIO
void GPIO_Config()
{
GPIO_InitTypeDef GPIO_InitStructure;
/*enble clock for GPIOA,B*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|
RCC_APB2Periph_GPIOB, ENABLE);
/*Configuration ADC pin*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Pin = ADC;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

/*Configuration controler pin*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = LED1|LED2|LED3|LED4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*Configuration LED pin*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = LED7SEG_A|LED7SEG_B|LED7SEG_C|
LED7SEG_D|LED7SEG_E|LED7SEG_F|LED7SEG_G|LED7SEG_DP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
12


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

3) Cấu hình ADC
Trên STM32F103 có 2 bộ kênh ADC. Trong đó ADC1 cho phép đọc tín hiệu từ bên
ngồi vào cịn ADC2 đọc tín hiệu bên trong.
Các kênh ADC1:
Vị trí chân
PA0
PA1
PA2
PA3
PA4
PA5

PA6
PA7
PB0
PB1

Các kênh ADC1
ADC0
ADC1
ADC2
ADC3
ADC4
ADC5
ADC6
ADC7
ADC8
ADC9

Bảng 3: Các kênh ADC1

Các đặc điểm chính của ADC:
Độ phân giải 12 bit
Ngắt được sinh ra sau khi kết thúc chuyển đổi
Có 2 chế độ chuyển đổi là Single và Continuous
Continuous mode và Discontinuous mode: Với continuous mode ADC sẽ tự
động chuyển đổi lại khi chuyển đổi xong và ngược lại với discontinuous
mode. Đối với chuyển đổi nhiều kênh cùng một lúc nên dùng discontinous
mode như thế sẽ giảm thời gian đọc một kênh nhất định nào đó mà khơng
phải đọc liên tục từ kênh 0-n
• Vref: điện áp so sánh. Đối với chip 144 chân sẽ có chân input điện áp so sánh






2.4V≤ Vref ≤ 3.6V. Và phải có lọc cẩn thận để ADC hoạt động ổn định. Với
chip 64 chân trở xuống chúng ta khơng cần quan tâm vì điện áp so sánh lấy ở
trong chip và bằng VDD
• Điện áp input cho kênh ADC Vref- ≤ Vin ≤ Vref+
Cấu hình ADC sử dụng chế độ quét liên tục:
void ADC_Config()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);
ADC_InitTypeDef ADC_InitStructure;
/*Configuration ADC1*/
13


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1,
ADC_SampleTime_55Cycles5);

/*enable ADC1*/
ADC_Cmd(ADC1, ENABLE);
/*Start ADC convertion*/
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
4) Cấu hình ngắt ngồi
NVIC - Nested vectored interrupt controller là bộ vector ngắt lồng nhau. Nghĩa là
chúng ta có thể sử dụng kết hợp nhiều ngắt trong một chương trình. Ngắt là một phần
quan trọng và thiết yếu của chương trình. Nếu khơng có ngắt thì chương trình sẽ thực
hiện theo 1 trình tự từ trên xuống dưới mà khơng có bất kì sự can thiệp nào. Điều đó là
bất lợi khi có 1 tác động ngồi xảy ra, chương trình sẽ khơng xử lí kịp thời dẫn đến việc
bỏ qua tác động đó. Ngắt ra đời để phục vụ cho các sự cố đó.
Một số thơng số ngắt chính của STM32F103:





16 mức ưu tiên có thể lập trình được
Độ trễ thấp (xảy ra ngắt cực kì nhanh)
Có quản lí năng lượng cho vector ngắt
Các thanh ghi điều khiển q trình ngắt

Một số tính năng chính của ngắt ngồi:





Kích hoạt độc lập và mặt nạ cho mỗi line sự kiện/ngắt.

Có bit trạng thái riêng cho mỗi line ngắt.
Có thể có tối đa 20 sự kiện/ ngắt.
Kiểm tra tín hiệu ngồi có độ rộng xung nhỏ hơn clock trên APB2.
14


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

Hình 2. 5: Các kênh ngắt ngồi

Cấu hình ngắt ngồi sử dụng kênh 13 có mức tích cực thấp:
void EXTI_Configuration(void)
{
EXTI_InitTypeDef
NVIC_InitTypeDef
GPIO_InitTypeDef

EXTI_InitStructure; // EXTI struct
NVIC_InitStructure; // NVIC struct
GPIO_InitStructure;

//cap clock cho ngat ngoai va ngoai vi
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|
RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOC, &GPIO_InitStructure);

/* mapping */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,
15


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

GPIO_PinSource13);
/* Clear the the EXTI line interrupt pending bit */
EXTI_ClearITPendingBit(EXTI_Line13);
/*EXTI line Configuration */
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Line = EXTI_Line13;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
/*NVIC Configuration*/
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
5) Đọc dữ liệu ADC
Công thức điện áp ra của ADC:

Từ cơng thức (1) ta tính ra được điện áp cần đo theo cơng thức:


Hàm tính giá trị điện áp đo được:

void Get_Value(){
sumadc = 0;
for(int i = 0; i<10; i++){
value = ADC_GetConversionValue(ADC1);
sumadc += value;
Delay(1);
}
sumadc /= 10;
voltage = sumadc*12.111/4095;
}
6) Hàm quét Led

16


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

Ở bài toán điều khiển Led 7 thanh chúng ta thường áp dụng theo cách nối mỗi con
Led 7 thanh vào 8 chân data độc lập. Tuy nhiên việc này sẽ gây lãng phí số chân điều
khiển Led và giới hạn số Led có thể điều khiển. Với số Led tăng lên đủ lơn số chân cũng
cần tăng lên rất nhiều. Để giải quyết bài tốn này có một kĩ thuật nêu ra là kĩ thuật “Quét
Led”.
Kỹ thuật quét Led thực hiện theo nguyên tắc một thời điểm chỉ bật một Led 7 thanh
với dữ liệu nó cần hiển thị, các Led còn lại được tắt. Việc quét Led thực hiên luôn phiên
sáng với các yêu cầu trên. Quá trình quét Led chuẩn được thực hiện theo các bước sau:
Bước 1: Xuất ra mã cần hiển thị.

Bước 2: Cấp nguồn cho Led muốn hiển thị.
Bước 3: Trễ 1 khoảng thời gian để duy trì sáng.
Bước 4: Cắt nguồn Led vừa hiển thị.
Thực hiện những bước trên nhiều lần mỗi giây làm mắt ta có cảm giác rằng 4 Led
đều đang được bật.
Chương trình quét Led:
void Quetled(uint32_t t)
{
int i = 100;
GPIO_ResetBits(GPIOA, LED1); //LED1 = 0
GPIO_ResetBits(GPIOA, LED2); //LED2 = 0
GPIO_ResetBits(GPIOA, LED3); //LED3 = 0
GPIO_ResetBits(GPIOA, LED4); //LED4 = 0
while(i--){
/*display led1*/ GPIO_Write(GPIOB, LED7SEG1[t/1000]);
GPIO_SetBits(GPIOA, LED1); // LED1 = 1
Delay(1);
GPIO_ResetBits(GPIOA, LED1); //LED1 = 0
/*display led2*/ uint16_t tmp1 = t%1000;
GPIO_Write(GPIOB, LED7SEG2[tmp1/100]);
GPIO_SetBits(GPIOA, LED2); //LED2 = 1
Delay(1);
GPIO_ResetBits(GPIOA, LED2); //LED2 = 0
/*display led3*/ uint16_t tmp2 = tmp1%100;
GPIO_Write(GPIOB, LED7SEG1[tmp2/10]);
GPIO_SetBits(GPIOA, LED3); //LED3 = 1
Delay(1);
17



Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

GPIO_ResetBits(GPIOA, LED3); //LED3 = 0
/*display led4*/ uint16_t tmp3 = tmp1%10;
GPIO_Write(GPIOB, LED7SEG1[tmp3]);
GPIO_SetBits(GPIOA, LED4); //LED4 = 1
Delay(1);
GPIO_ResetBits(GPIOA, LED4); //LED4 = 0
}
}
7) Chương trình chính
int main(void)
{
Clock_Config(); // configuraion clock
SystemCoreClockUpdate(); // update SystemCoreClock varibale
GPIO_Config();
ADC_Config();
EXTI_Configuration();
char s[20];
while(1)
{
Get_Value();
uint16_t display= voltage *100;
Quetled(display);
}
}
8) Chương trình ngắt ngồi
void EXTI15_10_IRQHandler(void)

{
if(EXTI_GetITStatus(EXTI_Line13) != RESET)
{
Get_Value();
uint16_t display = voltage*1000;
Quetled1(display);
}
/* Clear the EXTI line pending bit */
EXTI_ClearITPendingBit(EXTI_Line13);
}

18


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

III) Mơ phỏng hoạt động của mạch


Trước khi nhấn nút:

Hình 2. 6: Mạch trước khi nhấn nút



Sau khi nhấn nút:

19



Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

Hình 2. 7: Mạch sau khi nhấn nút

20


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

PHẦN 3
KẾT LUẬN
1) Những điều đề tài làm được
Như vậy với đề tài: Sử dụng vi điều khiển STM32F103C8T6 thiết kế đồng hồ đo
điện áp, hiển thị giá trị lên led 7 thanh dải đo từ 1 - 12V, sử dụng 1 nút nhấn chuyển
thang đo giữa V và mV. Đề tài đã đạt được những vấn đề sau:





Đã giới thiệu sơ lược về các thành phần phần cứng khá chi tiết và dễ hiểu.
Có thể đo và hiển thị điện áp một cách tương đối chính xác.
Mạch hoạt động ổn định.
Nút nhấn chuyển trạng thái hoạt động gần như ngay lập tức do sử dụng ngắt

ngoài.

2) Những khó khăn gặp phải
Trong q trình thực hiện đề tài, nhóm em đã gặp phải rất nhiều những khó khăn khác
nhau như: Do phải đọc nhiều tài liệu, datasheet,… dẫn đến nhiều chỗ dịch sai, dẫn đến áp
dụng các hàm, câu lệnh bị sai ý nghĩa, cấu trúc,… Trong quá trình viết chương trình gặp
phải nhiều lỗi mà khơng tìm ra ngay được nguyên nhân dẫn đến cần đầu tư nhiều thời
gian cho q trình sửa lỗi. Tuy nhiên, nhóm em đã cố gắng giải quyết được vấn đề phát
sinh để hồn thành đề tài.
Do kiến thức cịn nhiều hạn chế, chúng em tự thấy đề tài của mình
thực hiện vẫn cịn nhiều sai sót, khiếm khuyết. Vì vậy, chúng em rất
mong nhận được sự góp ý và giúp đỡ của thầy giáo để đề tài được
hoàn thiện hơn và có thêm nhiều cải tiến đáng kể để ứng dụng tốt hơn
vào thực tiễn.

21


Học viện Cơng nghệ Bưu chính Viễn thơng

Khoa kỹ thuật Điện tử 1

TÀI LIỆU THAM KHẢO
[1] Bài giảng Kỹ thuật vi xử lí, Thầy Nguyễn Quốc Uy, HVCNBCVT.
[2] Bài giảng Hệ thống nhúng, Thầy Nguyễn Ngọc Minh. HVCNBCVT.
[3] STM32F1xx-Reference-Manual, ST-Microelectronics.
[4] />[5] STM32F10x-standard-peripheral-library, ST-Microelectronics.

22




×