Báo cáo Lập trình nhúng: Lập trình ma trận LED

36 2.2K 20
Báo cáo Lập trình nhúng: Lập trình ma trận LED

Đ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

Cấu trúc ARM (viết tắt từ tên gốc là Advanced RISC Machine) là một loại cấu trúc vi xử lý 32bit kiểu RISC được sử dụng rộng rãi trong các thiết kế nhúng. Do có đặc điểm tiết kiệm năng lượng, các bộ CPU ARM chiếm ưu thế trong các sản phẩm điện tử di động, mà với các sản phẩm này việc tiêu tán công suất thấp là một mục tiêu thiết kế quan trọng hàng đầu. Ngày nay, hơn 75% CPU nhúng 32bit là thuộc họ ARM, điều này khiến ARM trở thành cấu trúc 32bit được sản xuất nhiều nhất trên thế giới. CPU ARM được tìm thấy khắp nơi trong các sản phẩm thương mại điện tử, từ thiết bị cầm tay (PDA, điện thoại di động, máy đa phương tiện, máy trò chơi cầm tay, và máy tính cầm tay) cho đến các thiết bị ngoại vi máy tính (ổ đĩa cứng, bộ định tuyến để bàn.) Một nhánh nổi tiếng của họ ARM là các vi xử lý Xscale của Intel. Chính vì những ưu điểm đó, nhóm em đã sử dụng vi điều khiển STM32F407VG để hoàn thiện đề tài “Lập trình ma trân LED”. Chúng em trân trọng cảm ơn thầy đã hướng dẫn chúng em nhiệt tình để chúng em hoàn thành bài tập lớn này Trong quá trình hoàn thành bài tập này, nhóm rất mong được sự đóng góp ý kiến nhiệt tình và chân thành từ thầy và các bạn để chúng em có thể hoàn thành bài tập một cách xuất sắc nhất

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN LẬP TRÌNH NHÚNG CƠ BẢN Tên đề tài: “Lập trình ma trận LED” Giảng viên hướng dẫn: Th.S Phạm Văn Hà Nhóm thực hiện: Nhóm lớp KTPM1-K7 SV thực hiện: Nguyễn Thanh Hóa Mai Ngân Sơn LUANGPASERT Vilaiphone Hà Nội, 12/2015 MỤC LỤC LỜI NÓI ĐẦU Cấu trúc ARM (viết tắt từ tên gốc Advanced RISC Machine) loại cấu trúc vi xử lý 32-bit kiểu RISC sử dụng rộng rãi thiết kế nhúng Do có đặc điểm tiết kiệm lượng, CPU ARM chiếm ưu sản phẩm điện tử di động, mà với sản phẩm việc tiêu tán công suất thấp mục tiêu thiết kế quan trọng hàng đầu Ngày nay, 75% CPU nhúng 32-bit thuộc họ ARM, điều khiến ARM trở thành cấu trúc 32-bit sản xuất nhiều giới CPU ARM tìm thấy khắp nơi sản phẩm thương mại điện tử, từ thiết bị cầm tay (PDA, điện thoại di động, máy đa phương tiện, máy trò chơi cầm tay, máy tính cầm tay) thiết bị ngoại vi máy tính (ổ đĩa cứng, định tuyến để bàn.) Một nhánh tiếng họ ARM vi xử lý Xscale Intel Chính ưu điểm đó, nhóm em sử dụng vi điều khiển STM32F407VG để hoàn thiện đề tài “Lập trình ma trân LED” Chúng em trân trọng cảm ơn thầy hướng dẫn chúng em nhiệt tình để chúng em hoàn thành tập lớn này! Trong trình hoàn thành tập này, nhóm mong đóng góp ý kiến nhiệt tình chân thành từ thầy bạn để chúng em hoàn thành tập cách xuất sắc nhất! CHƯƠNG I Tổng quan vi điều khiển stm32f4 1.Sơ lược STM32: STM32 chip ST, dựa lõi ARM Cortex-M Dòng ARM Cortex™M hệ mới, thiết lập tiêu chuẩn hiệu suất, chi phí, ứng dụng cho thiết bị cần tiêu thụ lượng thấp, đáp ứng yêu cầu thời gian thực khắc khe Ứng dụng STM32: Ứng dụng rộng nhỉ: từ điện tử dân dụng (tivi, đầu máy, máy giặt ), xe đời mới, game, mobile, laptop chỗ ARM có mặt Tính bật: • Tiêu thụ lượng cực thấp: • Hiệu suất cực cao: • Coding cực dễ: Với đồ sộ ngoại vi (GPIO, I2C, SPI, ADC, USB, Ethernet, CAN ), ST cung cấp cho thư viện trực tiếp cho dòng ARM (gọi CMSIS - Cortex Microcontroller Software Interface Standard), nhiệm vụ dễ dàng hơn: khai báo sử dụng mà • Giá tiền cực rẻ: STM32F100x giá khoảng 29K (~ ATMega8) mà STM32F100x chạy tốc độ 24Mhz Flash 16 128K  37/51/80 chân I/O  USART  12 Timers  16 kênh ADC -12bit  I2C  SPI  Watchdog  16 ngắt lập trình  RTC (đồng hồ thời gian thực tích hợp) Trước kết thúc, xem hình để so sánh cách trực quan dòng VXL bit - 16 bit Cortex™-M qua hàm "nhân số 16 bit" (Cortex™-M nhân số 32 bit lệnh): Giới thiệu xử lý ARM Cortex-M4 2.1 Giới thiệu Giải pháp Soc (System-on-chip) dựa vi xử lý nhúng ARM ứng dụng vào nhiều thị trường khác bao gồm ứng dụng doanh nghiệp, hệ thống ô tô, mạng gia đình công nghệ mạng không dây Dòng vi xử lý ARM Cortex dựa kiến trúc chuẩn đủ để đáp ứng hầu hết yêu cầu hiệu làm việc tất lĩnh vực Dòng ARM Cortex bao gồm ba cấu hình khác kiến trúc ARMv7: cấu hình A cho ứng dụng tinh vi, yêu cầu cao chạy hệ điều hành mở phức tạp Linux, Android…; cấu hình R dành cho hệ thống thời gian thực cấu hình M tối ưu cho ứng dụng vi điều khiển, cần tiết kiệm chi phí Bộ vi xử lý Cortex-M4 vi xử lý ARM dựa kiến trúc ARMv7-M thiết kế đặc biệt để đạt hiệu suất cao ứng dụng nhúng cần tiết kiệm lượng chi phí, chẳng hạn vi điều khiển, hệ thống ô tô, hệ thống kiểm soát công nghiệp hệ thống mạng không dây Thêm vào việc lập trình đơn giản hóa đáng kể giúp kiến trúc ARM trở thành lựa chọn tốt cho ứng dụng đơn giản 2.1.1 Hiệu suất cao Để đạt hiệu suất cao hơn, vi xử lý làm việc nhiều làm việc thông minh Đẩy tần số hoạt động cao làm tăng hiệu suất kèm với việc tiêu thụ lượng nhiều việc thiết kế phức tạp Nói cách khác, thực tác vụ cách nâng cao hiệu tính toán hoạt động tần số thấp dẫn đến đơn giản hóa việc thiết kế tốn lượng Trung tâm vi xử lý Cortex-M4 lõi có cấu trúc đường ống tiên tiến tầng, dựa kiến trúc Harvard, kết hợp nhiều tính mạnh mẽ suy đoán việc rẽ nhánh, phép nhân thực thi chu kỳ phép chia thực phần cứng tạo nên hiệu vượt trội (điểm Dhrystone 1,25 DMIPS/MHz) Bộ vi xử lý Cortex-M4 hỗ trợ kiến trúc tập lệnh Thumb-2, giúp hoạt động hiệu 70% cho MHz so với vi xử lý ARM7TDMI-S thực thi với tập lệnh Thumb, hiệu 35% so với xử lý ARM7TDMI-S thực thi với tập lệnh ARM 2.1.2 Dễ sử dụng, phát triển ứng dụng nhanh chóng, hiệu Tiêu chí quan trọng việc lựa chọn vi xử lý giảm thời gian chi phí phát triển, đặc biệt khả phát triển ứng dụng phải thật nhanh chóng đơn giản Bộ vi xử lý Cortex-M4 thiết kế để đáp ứng mục tiêu Người lập trình không cần phải viết mã hợp ngữ (assembler code) cần phải có kiến thức sâu kiến trúc để tạo ứng dụng đơn giản Bộ vi xử lý có mô hình lập trình dựa ngăn xếp đơn giản hoá để tương thích với kiến trúc ARM truyền thống tương tự với hệ thống triển khai kiến trúc 16-bit, giúp việc chuyển tiếp đến kiến trúc 32-bit dễ dàng Ngoài mô hình ngắt dựa phần cứng giúp việc viết chương trình xử lý ngắt trở nên đơn giản hết, chương trình khởi động viết trực tiếp ngôn ngữ C mà không cần lệnh assembly so với kiến trúc ARM truyền thống Các tính tập lệnh Thumb-2 bao gồm việc thực mã lệnh C cách tự nhiên hơn, thao tác trực tiếp bit, phép chia phần cứng lệnh If/Then Hơn nữa, nhìn từ góc độ phát triển ứng dụng, Thumb-2 tăng tốc độ phát triển, đơn giản hóa việc bảo trì, hỗ trợ đối tượng biên dịch thông qua tối ưu hóa tự động cho hiệu suất mật độ mã mà không cần quan tâm đến việc mã biên dịch cho chế độ ARM Thumb Kết lập trình viên để mã nguồn họ ngôn ngữ C mà không cần tạo thư viện đối tượng biên dịch sẵn, có nghĩa khả tái sử dụng mã nguồn lớn nhiều 2.1.3 Giảm chi phí phát triển lượng tiêu thụ Chi phí rào cản lớn cho lựa chọn vi xử lý hiệu suất cao Bộ vi xử lý thiết kế diện tích nhỏ giảm chi phí đáng kể Bộ vi xử lý Cortex-M4 thực điều cách cài đặt lõi ARM nhỏ từ trước đến nay, với 33.000 cổng (cổng NAND NOR… tuỳ vào công nghệ sản xuất) lõi trung tâm (0.18um G) cách kết hợp hiệu quả, chặt chẽ thành phần hệ thống vi xử lý Bộ nhớ tối giản cách cài đặt nhớ không thẳng hàng (unaligned), thao tác bit dễ dàng với kĩ thuật bit banding Tập lệnh Thumb-2 tiết kiệm nhớ 25%so với tập lệnh ARM Để đáp ứng nhu cầu ngày tăng việc tiết kiệm lượng ứng dụng mạng không dây…, vi xử lý Cortex-M4 hỗ trợ mở rộng xung nhịp cho cổng (có thể ngừng cung cấp xung nhịp cho cổng để tiết kiệm lượng) tích hợp chế độ ngủ Kết vi xử lý tiêu thụ 4.5mW điện chiếm diện tích 0.3 mm2 (silicon footprint) triển khai tần số 50MHz trình công nghệ TSMC 0.13G, sử dụng tế bào tiêu chuẩn ARM Metro 2.1.4 Tích hợp khả dò lỗi theo vết lập trình Hệ thống nhúng thường giao diện người dùng đồ họa (GUI) làm cho việc gỡ lỗi chương trình trở thành thách thức thật đối lập trình viên Ban đầu, ICE (In-circuit Emulator) sử dụng để tạo cửa sổ theo dõi hệ thống thông qua giao diện quen thuộc PC Tuy nhiên hệ thống ngày nhỏ phức tạp hơn, phương pháp không khả thi Công nghệ gỡ lỗi vi xử lý Cortex-M4 cài đặt phần cứng (kết hợp với vài thành phần khác) giúp gỡ lỗi nhanh với tính trace & profiling, breakpoints, watchpoints vá lỗi giúp rút ngắn thời gian phát triển ứng dụng Ngoài ra, vi xử lý cung cấp mức nhìn cao vào hệ thống thông qua cổng JTAG truyền thống cổng SWD (Serial Wire Debug) sử dụng đường tín hiệu, thích hợp cho thiết bị có kiểu đóng gói nhỏ gọn 2.1.5 Chuyển từ dòng xử lý ARM7 sang Cortex-M4 để hoạt động sử dụng lượng hiệu Trong gần thập kỷ qua, dòng vi xử lý ARM7 sử dụng rộng rãi Bộ vi xử lý Cortex-M4 xây dựng tảng nên việc nâng cấp từ dòng ARM7 lên Cortex-M4 hợp lý dễ dàng Lõi trung tâm làm việc hiệu hơn, mô hình lập trình đơn giản, cách xử lý ngắt tất định (deterministic interrupt behaviour), việc tích hợp thiết bị ngoại vi giúp nâng cao hiệu làm việc mà giữ chi phí thấp Bảng So sánh ARM7TDMI-S Cortex-M4 (100MHz - TSMC 0.18G) (*: Không bao gồm thiết bị ngoại vi (MPU & ETM) thành phần tích hợp khác) sau bạn Buil Bước 8: Debug Run cho chạy lên KIT Khi Run có kết led pc8 pc9 chớp tắt Giới thiệu USART USART (Universal synchronous asynchronous receiver transmitter) truyền nhận nối tiếp đồng không đồng Trong truyền thông nối tiếp liệu truyền nối đuôi hay vài đường truyền Ưu điểm truyền thông nối tiếp vi điều khiển có khả truyền-nhận nhiều liệu, tiết kiệm đường đường IO, nhược điểm không nhanh truyền song song dễ bị mất, lỗi liệu, phải có kế hoạch phòng ngừa tình Chuẩn truyền thông tương thích với RS232 PC có thiết bị chuyển đổi điện áp để giao tiếp Nếu máy tính bạn cổng COM bạn sử dụng thiết bị chuyển đổi “USB to COM” “USB to USART” Dưới khung truyền chuẩn USART RS232 Mạch STM32F4 Discovery (ARM Cortex M4 + DSP Core) CHƯƠNG III: Chương trình #include "stm32f4xx.h" #include "stm32f4xx_rcc.h" #include "stm32f4xx_gpio.h" #include "misc.h" #include "stm32f4xx_exti.h" #include "stm32f4xx_syscfg.h" GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; void Delay( IO uint32_t nCount) { while(nCount ) { } } int LedMatrix[8][8] = { {0, 0, 0, 0, ,0 ,0 ,0}, {0, 0, 0, 0, ,0 ,0 ,0}, {0, 0, 0, 0, ,0 ,0 ,0}, {0, 0, 0, 0, ,0 ,0 ,0}, {0, 0, 0, 0, ,0 ,0 ,0}, {0, 0, 0, 0, ,0 ,0 ,0}, {0, 0, 0, 0, ,0 ,0 ,0}, {0, 0, 0, 0, ,0 ,0 ,0} }; int dir = 0; void SetCell(int row, int col) { LedMatrix[row -1][col - 1] = 1; } void ResetCell(int row, int col) { LedMatrix[row - 1][col - 1] = 0; } void ScanLeds( IO uint32_t nCount) { int row = 0; int col = 0; int cell = 0; while(nCount ) { for(row = 0; row < 8; row++) { for(col = 0; col < 8; col++) { if(LedMatrix[row][col] == 1) { switch(row + 1) { case 1: GPIO_SetBits(GPIOD, 2: GPIO_SetBits(GPIOD, 3: GPIO_SetBits(GPIOD, 4: GPIO_SetBits(GPIOD, 5: GPIO_SetBits(GPIOD, 6: GPIO_SetBits(GPIOB, 7: GPIO_SetBits(GPIOD, 8: GPIO_SetBits(GPIOD, GPIO_Pin_4); break; case GPIO_Pin_3); break; case GPIO_Pin_2); break; case GPIO_Pin_1); break; case GPIO_Pin_6); break; case GPIO_Pin_3); break; case GPIO_Pin_5); break; case GPIO_Pin_7); break; } switch(col + 1) { case 1: GPIO_SetBits(GPIOB, 2: GPIO_SetBits(GPIOD, 3: GPIO_SetBits(GPIOD, 4: GPIO_SetBits(GPIOD, 5: GPIO_SetBits(GPIOD, 6: GPIO_SetBits(GPIOD, 7: GPIO_SetBits(GPIOD, 8: GPIO_SetBits(GPIOD, GPIO_Pin_15); break; case GPIO_Pin_8); break; case GPIO_Pin_9); break; case GPIO_Pin_10); break; case GPIO_Pin_11); break; case GPIO_Pin_12); break; case GPIO_Pin_13); break; case GPIO_Pin_14); break; } } Delay(10); GPIO_ResetBits(GPIOD, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12| GPIO_Pin_13 | GPIO_Pin_14); GPIO_ResetBits(GPIOB, GPIO_Pin_3 | GPIO_Pin_15); Delay(10); } } } } void EXTILine_Config(void) { /* Enable GPIOB clock */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); /* Enable SYSCFG clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 ; GPIO_Init(GPIOB, &GPIO_InitStructure); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource6); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource7); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource8); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource9); EXTI_InitStructure.EXTI_Line = EXTI_Line6 | EXTI_Line7 | EXTI_Line8 | EXTI_Line9; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void init() { GPIO_InitTypeDef GPIO_InitDef; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); GPIO_InitDef.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14; GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitDef.GPIO_OType = GPIO_OType_PP; GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOD, &GPIO_InitDef); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); GPIO_InitDef.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_15; GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitDef.GPIO_OType = GPIO_OType_PP; GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOB, &GPIO_InitDef); } int main(void) { init(); EXTILine_Config (); int i = 1, j = 1; while(1) { SetCell(i, j); ScanLeds(200); ResetCell(i, j); switch(dir) { case 0: i++; if(i == ) { i = 1; } break; case 1: j++; if(j == 9) { j = 1; } break; case 2: i ; if(i == 0) { i = 8; } break; case 3: j ; if(j == 0) { j = 8; } break; } } } KẾT LUẬN Thay mặt nhóm 9, em xin lần gửi lời tới thầy cô, bạn giúp đỡ hỗ trợ nhóm hoàn thành dự án Em xin chân thành cảm ơn! [...]... 0, 0, 0 ,0 ,0 ,0} }; int dir = 0; void SetCell(int row, int col) { LedMatrix[row -1][col - 1] = 1; } void ResetCell(int row, int col) { LedMatrix[row - 1][col - 1] = 0; } void ScanLeds( IO uint32_t nCount) { int row = 0; int col = 0; int cell = 0; while(nCount ) { for(row = 0; row < 8; row++) { for(col = 0; col < 8; col++) { if(LedMatrix[row][col] == 1) { switch(row + 1) { case 1: GPIO_SetBits(GPIOD,... chuyển dữ liệu không thẳng hàng được biến thành việc chuyển nhiều lần dữ liệu thẳng hàng và có tính trong suốt đối với lập trình viên (nghĩa là lập trình viên hoàn toàn không cần quan tâm đến điều này) Ngoài ra bộ vi xử lý Cortex-M4 cũng hỗ trợ phép nhân 32-bit hoạt động trong một chu trình đơn và các phép chia có dấu, không dấu với các lệnh SDIV và UDIV, mất từ 2 đến 12 chu kỳ phụ thuộc vào kích thước... dụng như hình: Bước 6: Chúng ta bắt đầu add example mà nó gợi ý xem sao: Bước 7: Sau khi Add xong, chúng ta Buil nó bằng phím F7 hoặc Project->Build Nhưng khi build nó sẽ xuất hiên thông báo chưa có bộ TRÌNH DỊCH GNU, trình dịch mình sử dụng là GCC chúng ta khắc phục nó như sau: B7.1 Tải theo link mà mình đã up: arm-2011.03-coocox Tải về giải nén vào thư mục cài đặt của bạn B7.2 Chọn Ok, nó sẽ bảo chúng... M4 + DSP Core) CHƯƠNG III: Chương trình #include "stm32f4xx.h" #include "stm32f4xx_rcc.h" #include "stm32f4xx_gpio.h" #include "misc.h" #include "stm32f4xx_exti.h" #include "stm32f4xx_syscfg.h" GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; void Delay( IO uint32_t nCount) { while(nCount ) { } } int LedMatrix[8][8] = { {0, 0, 0, 0, 0 ,0... Lõi trung tâm Cortex-M4 dựa trên kiến trúc Harvard, được đặc trưng bằng sự tách biệt giữa vùng nhớ chứa dữ liệu và chương trình do đó có các bus riêng để truy cập (hình 3) Đặc tính này khác với dòng ARM7 dựa trên kiến trúc Von Neumann sử dụng chung vùng nhớ để chứa dữ liệu và chương trình, do đó dùng chung bus cho việc truy xuất Vì có thể đọc cùng lúc lệnh và dữ liệu từ bộ nhớ, bộ vi xử lý Cortex-M4 có... rộng của đường dẫn dữ liệu 32 bit, các dải thanh ghi và giao tiếp bộ nhớ Có 13 thanh ghi đa dụng, hai con trỏ ngăn xếp, một thanh ghi liên kết, một bộ đếm chương trình và một số thanh ghi đặc biệt trong đó có một thanh ghi trạng thái chương trình Bộ vi xử lý Cortex-M4 hỗ trợ hai chế độ hoạt động (Thread và Handler) và hai mức truy cập tài nguyên của lõi xử lí (đặc quyền và không đặc quyền), tạo điều... GPIO_InitDef.GPIO_OType = GPIO_OType_PP; GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOB, &GPIO_InitDef); } int main(void) { init(); EXTILine_Config (); int i = 1, j = 1; while(1) { SetCell(i, j); ScanLeds(200); ResetCell(i, j); switch(dir) { case 0: i++; if(i == 9 ) { i = 1; } break; case 1: j++; if(j == 9) { j = 1; } break; case 2: i ; if(i == 0) { i =... thư mục có file "arm-none-eabi-gcc", các bạn dẫn đến thư mục bin mà các bạn đã giải nén lúc nảy sau đó các bạn sẽ Buil được Bước 8: Debug nó và Run cho nó chạy lên KIT thôi Khi Run nó sẽ có kết quả là 2 led pc8 và pc9 chớp tắt 2 Giới thiệu USART USART (Universal synchronous asynchronous receiver transmitter) truyền nhận nối tiếp đồng bộ và không đồng bộ Trong truyền thông nối tiếp dữ liệu truyền sẽ nối... và bộ vi xử lý sẽ phân tích xem đâu là lệnh thực thi kế tiếp Nếu việc rẽ nhánh không được chọn thì lệnh tiếp theo đã sẵn sàng Còn nếu việc rẽ nhánh được chọn thì lệnh rẽ nhánh đó cũng đã sẵn sàng ngay lập tức, hạn chế thời gian rỗi chỉ còn một chu kỳ Lõi Cortex-M4 chứa một bộ giải mã cho tập lệnh Thumb truyền thống và Thumb2 mới, một ALU tiên tiến hỗ trợ nhân chia phần cứng, điều khiển logic, và các... Coocox.org để tải Coocox IDE bản mới nhất: Tải về tại đây Chọn Download the latest CooCox CoIDE Chúng ta download CoCenter-1.4.9.exe cài vào máy Sau đó Open và download các phần mềm chính bao gồm IDE; CooCox smart chúng ta có thể download tất cả các phần này về tùy nhu cầu sử dụng của các bạn Sau khi đã tải xong trên cửa sổ CoCenter sẽ có tag install nhấn install để cài đặt Bước 1: Tạo project mới ->Creat ... thẳng hàng có tính suốt lập trình viên (nghĩa lập trình viên hoàn toàn không cần quan tâm đến điều này) Ngoài vi xử lý Cortex-M4 hỗ trợ phép nhân 32-bit hoạt động chu trình đơn phép chia có dấu,... (silicon footprint) triển khai tần số 50MHz trình công nghệ TSMC 0.13G, sử dụng tế bào tiêu chuẩn ARM Metro 2.1.4 Tích hợp khả dò lỗi theo vết lập trình Hệ thống nhúng thường giao diện người dùng đồ... đáp ứng mục tiêu Người lập trình không cần phải viết mã hợp ngữ (assembler code) cần phải có kiến thức sâu kiến trúc để tạo ứng dụng đơn giản Bộ vi xử lý có mô hình lập trình dựa ngăn xếp đơn

Ngày đăng: 06/04/2016, 10:56

Từ khóa liên quan

Mục lục

  • LỜI NÓI ĐẦU

  • CHƯƠNG I . Tổng quan về vi điều khiển stm32f4

    • 1.Sơ lược về STM32:

    • 2.1. Giới thiệu

    • 2.1.1 Hiệu suất cao

    • 2.1.2. Dễ sử dụng, phát triển ứng dụng nhanh chóng, hiệu quả

    • 2.1.3. Giảm chi phí phát triển và năng lượng tiêu thụ

    • 2.1.4. Tích hợp khả năng dò lỗi và theo vết trong lập trình

    • 2.1.5. Chuyển từ dòng xử lý ARM7 sang Cortex-M4 để hoạt động và sử dụng năng lượng hiệu quả hơn

    • 2.2. Kiến trúc và tính năng vi xử lý Cortex-M4

    • 2.2.1 Lõi Cortex-M4

    • 2.2.2 Kiến trúc tập lệnh Thumb-2

    • CHƯƠNG II. Giới thiệu về Coocox IDE

      • 1. Hướng dân cài đặt

      • 2. Giới thiệu USART

      • CHƯƠNG III: Chương trình

      • KẾT LUẬN

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

Tài liệu liên quan