嵌入式作業(yè)題答案_第1頁(yè)
嵌入式作業(yè)題答案_第2頁(yè)
嵌入式作業(yè)題答案_第3頁(yè)
嵌入式作業(yè)題答案_第4頁(yè)
嵌入式作業(yè)題答案_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第1章 嵌入式系統(tǒng)概述1. 什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)的組成?答:嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。組成:嵌入式處理器、外圍設(shè)備、操作系統(tǒng)、應(yīng)用軟件。2. 典型的嵌入式處理器有哪些?3. 答:微處理器、微控制器、DSP處理器、片上系統(tǒng)SOC。4. 典型的RTOS操作系統(tǒng)有哪些?5. 答:嵌入式Linux、CLinux、Windows Embedded CE、Windows Embedded Compact 7、C/OS-II、C/OS-III、VxWorks、eCos等。6. 列舉身邊的嵌

2、入式應(yīng)用產(chǎn)品?7. 嵌入式系統(tǒng)的設(shè)計(jì)可以分成四個(gè)階段:需求分析、架構(gòu)設(shè)計(jì)和概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)和開發(fā)、測(cè)試反饋。 第2章 Cortex-M體系結(jié)構(gòu)8. ARM Cortex系統(tǒng)的處理器分為:_A_、_R_、_M_。9. ARM Cortex-M3為32位微控制器,請(qǐng)問(wèn)32位指的是CPU字長(zhǎng)。10. 3、Cortex-M3 處理器能夠以小端格式或大端格式訪問(wèn)存儲(chǔ)器中的數(shù)據(jù)字,而訪問(wèn)代碼時(shí)始使用小端格式。11. ARM Cortex-M3體系結(jié)構(gòu)采用哈佛總線結(jié)構(gòu),擁有獨(dú)立的指令總線和數(shù)據(jù)總線,可以讓取指與數(shù)據(jù)訪問(wèn)并行進(jìn)行。12. CM3寄存器分為通用寄存器,包括R0R15。和特殊功能寄存器,包括程序

3、狀態(tài)寄存器、異常屏蔽寄存器、控制寄存器。13. 寄存器R13是堆棧指針寄存器。14. 寄存器R14是程序連接寄存器。15. 寄存器R15是程序PC。16. CM3的堆棧指針?lè)譃開MSP_、_PSP_。存儲(chǔ)器堆棧堆棧分為:向上生長(zhǎng)(即向高地址方向生長(zhǎng))的遞增堆棧;向下生長(zhǎng)(即向低地址方向生長(zhǎng)),稱為遞減堆棧。堆棧指針指向最后壓入堆棧的有效數(shù)據(jù)項(xiàng),稱為滿堆棧;堆棧指針指向下一個(gè)數(shù)據(jù)項(xiàng)放入的空位置,稱為空堆棧。試判斷CM3屬于遞減堆棧堆棧和滿堆棧堆棧。17. 在CM3中記錄程序狀態(tài)的寄存器是_xPSR_。都分別有些什么狀態(tài)_應(yīng)用狀態(tài)、中斷狀態(tài)、可執(zhí)狀態(tài)。18. PRIMASK寄存器的作用是_中斷屏蔽

4、寄存器_。19. 寄存器CONTROL的作用是控制處理器工作級(jí)別及堆棧切換 。20. CM3支持的4GB存儲(chǔ)空間被劃分成:CODE、片上RAM、片上外設(shè)、片外RAM、片外外設(shè)、內(nèi)核私有6個(gè)區(qū)域。21. CM3中有一個(gè)位綁定區(qū)分別位于片上RAM和片上外設(shè)區(qū),其大小為1M字節(jié),由32M字節(jié)空間的位綁定別名區(qū)來(lái)訪問(wèn)。22. CM3支持16種系統(tǒng)異常,和240種外設(shè)中斷。23. SysTick是一個(gè)_24_位的系統(tǒng)定時(shí)器。通常的功能是_作為操作系統(tǒng)時(shí)鐘_。第3章STM32基礎(chǔ)及最小系統(tǒng)設(shè)計(jì)24. STM32F103RBT7芯片的在片F(xiàn)lash存儲(chǔ)器有 128KB 字節(jié),在片SRAM存儲(chǔ)器有 20KB

5、字節(jié)。25. STM32F103RBT7芯片工作時(shí)電源電壓是 3.3 V。26. STM32最小系統(tǒng)電路包含:MCU芯片、電源電路、時(shí)鐘電路、復(fù)位電路和啟動(dòng)設(shè)置電路。27. 連接在APB1上的設(shè)備有:電源接口、備分接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、WatchDog、Timer2、Timer3和Timer4。28. 連接在APB2上的設(shè)備有:UART1、SPI1、Timer1、ADC1、ADC2、I/O(PAPE,第二功能I/O) 。29. 假定STM32F103單片機(jī)外部振蕩器是8MHz。執(zhí)行下列程序。void BSP_Init(void) RCC_H

6、SEConfig(RCC_HSE_ON); HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus = SUCCESS) RCC_PCLK2Config(RCC_HCLK_Div1); / PCLK2 = HCLK=72MHz RCC_PCLK1Config(RCC_HCLK_Div2); / PCLK1 = HCLK/2 =38MHz RCC_HCLKConfig(RCC_SYSCLK_Div1); /HCLK = SYSCLK =72MHz RCC_PLLConfig(RCC_PLLSource_HSE_Div1, R

7、CC_PLLMul_9); / PLLCLK = 8 * 9 = 72MHz RCC_PLLCmd(ENABLE); / Enable PLL while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET); / 等待 PLL就緒 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); / 設(shè)置PLL作為時(shí)鐘源 while(RCC_GetSYSCLKSource() != 0x08); / 等PLL時(shí)鐘源啟動(dòng)就緒 請(qǐng)問(wèn),上述程序執(zhí)行后,HCLK= 72MHz ,PCLK1= 38MHz ,PCLK2= 72MHz ,30. 利用

8、Cortex-M3內(nèi)核的24位定時(shí)器(SysTick),定時(shí)10ms,請(qǐng)計(jì)算初值并寫出初始化程序,SysTick配置函數(shù):uint32_t SysTick_Config(uint32_t ticks)。假設(shè)HCLK的時(shí)鐘是72MHz。答:初值=-1。,共中N是計(jì)數(shù)的次數(shù),由于SysTick是減計(jì)數(shù)器,因此初值為-1。void SysTickInit (void)SysTick_Config(-1);第5章 通用I/O結(jié)構(gòu)及應(yīng)用31. STM32F103微控制器的I/O端口有PAPG,每組多達(dá) 16 端口。32. STM32F103微控制器的I/O端口的功能:通用輸入/輸出、中斷功能、復(fù)用功能和

9、重映射功能。33. 請(qǐng)編程實(shí)現(xiàn)如圖所示4只發(fā)光二極管流水。LM3S單片機(jī)VDDLED1LED2PC8PC9LED3LED4PC10PC11/*/*說(shuō)明:PC8-PC15連接LED*/#include stm32f10x.h#include system_stm32f10x.h#include stm32f10x_gpio.h#include stm32f10x_rcc.hvoid DelayMs( int n);/*/int main(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_G

10、PIOC,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_Write(GPIOC, 0xFFFF);/*/while(1) GPIO_ResetBits(GPIOC, GPIO_Pin_8); De

11、layMs(500); GPIO_SetBits(GPIOC, GPIO_Pin_8); GPIO_ResetBits(GPIOC, GPIO_Pin_9); DelayMs(500); GPIO_SetBits(GPIOC, GPIO_Pin_9); GPIO_ResetBits(GPIOC, GPIO_Pin_10); DelayMs(500); GPIO_SetBits(GPIOC, GPIO_Pin_10); GPIO_ResetBits(GPIOC, GPIO_Pin_11); DelayMs(500); GPIO_SetBits(GPIOC, GPIO_Pin_11); void

12、DelayMs(int n)unsigned int i,j;for (i = 0;in;+i)for(j=0;jPA0;Buz-PB4按鍵采用中斷,在中斷服務(wù)程中取反PB4*/#include stm32f10x.h#include system_stm32f10x.h#include stm32f10x_gpio.h#include stm32f10x_rcc.h#include stm32f10x_exti.h#include misc.h/*中斷第二級(jí)配置*/void NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructur

13、e; NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);/*中斷第三級(jí)配置*/void EXTI_Configuration(void) EXTI_InitTypeDef EX

14、TI_InitStructure; GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure

15、);/*按鍵初始化*/void key_init(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);/*蜂鳴器端口

16、初始化*/void Buzzer_Init(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); /PB4 重映射 /Buzzer GPIO_InitStructure.GPIO_Pin =GPIO_Pin_4; GPIO_InitStructure.GPIO_

17、Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_ResetBits(GPIOB, GPIO_Pin_4);/置低電平,關(guān)閉蜂鳴器int main(void) key_init();Buzzer_Init();_set_PRIMASK(0x00); /一級(jí)開關(guān)使能NVIC_Configuration();/二級(jí)開關(guān)使能EXTI_Configuration();/三級(jí)開關(guān)使能/*/while(1) ; /*/vo

18、id EXTI0_IRQHandler(void)if(EXTI_GetITStatus(EXTI_Line0) != RESET) GPIO_WriteBit(GPIOB, GPIO_Pin_4,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_4); EXTI_ClearITPendingBit(EXTI_Line0);第6章 定時(shí)器結(jié)構(gòu)及應(yīng)用35. STM32F103定時(shí)器是 16 位定時(shí)器。36. STM32F103的基本定時(shí)器有:TIM6、TIM7,通用定時(shí)器有:TIM2TIM5,高級(jí)定時(shí)器有:TIM1、TIM8。37. STM

19、32F103定時(shí)器的主要功能有:定時(shí)功能、輸入捕獲功能、輸出比較功能(PWM)等。38. 已知系統(tǒng)時(shí)鐘為72MHz,采用定時(shí)器TIM1產(chǎn)生周期為100ms的定時(shí)時(shí)間間隔并通過(guò)LED發(fā)光二極管指示定時(shí)過(guò)程,發(fā)光二極管與PC15相連。分析:TIM1的時(shí)鐘為72MHz,定時(shí)100ms,需要計(jì)數(shù)7.2X106,已超出計(jì)數(shù)值范圍,因此必須對(duì)輸入時(shí)鐘信號(hào)進(jìn)行分頻。分頻系數(shù)有多種選擇,只要在計(jì)數(shù)范圍內(nèi)即可,只是計(jì)數(shù)值越大,分頻率越高。對(duì)輸入時(shí)鐘進(jìn)行360分頻,則計(jì)數(shù)值為2000,程序采用中斷的方式,計(jì)時(shí)時(shí)間到LED狀態(tài)反轉(zhuǎn)。/*說(shuō)明:已知系統(tǒng)時(shí)鐘為72MHz,采用定時(shí)器TIM1產(chǎn)生周期為100ms 的定時(shí)時(shí)

20、間間隔并通過(guò)LED發(fā)光二極管指示定時(shí)過(guò)程。*/#include stm32f10x.h#include system_stm32f10x.h#include stm32f10x_GPIO.h#include stm32f10x_tim.h#include stm32f10x_rcc.h#include misc.h/*說(shuō)明:LED端口初始化PA15接LED.PD2控制鎖存器*/void GPIO_Configuration(void) GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,

21、ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15 ;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_Write(GPIOC, 0xFFFF);/*下面為74HC573鎖存控制*/GPIO_InitStructur

22、e.GPIO_Pin = GPIO_Pin_2;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOD, &GPIO_InitStructure);/NLE 置高,打開鎖存器74HC573GPIO_SetBits(GPIOD, GPIO_Pin_2);void TIM1_Configuration(void) /* - TIM1 Configuration: Output Compare Timing Mode: TIM1CL

23、K = 72 MHz, Prescaler =360,period=2000 -*/ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); TIM_TimeBaseStructure.TIM_Period=2000; /初值 TIM_TimeBaseStructure.TIM_Prescaler=360-1; /時(shí)鐘預(yù)分頻值 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeB

24、aseStructure.TIM_CounterMode=TIM_CounterMode_Down;/計(jì)數(shù)方式 TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE); /使能中斷(三級(jí)) TIM_Cmd(TIM1, ENABLE);void NVIC_Configuration() /使能第二級(jí)中斷開關(guān) NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;

25、 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);int main()GPIO_Configuration();NVIC_Configuration();TIM1_Configuration();while(1);第7章 USART結(jié)構(gòu)及應(yīng)用39. 常見的短距離異步串行通

26、信協(xié)議標(biāo)準(zhǔn)有:RS232標(biāo)準(zhǔn) 、RS485標(biāo)準(zhǔn) 。40. 在異步串行通信中RS232標(biāo)準(zhǔn)的硬件連線主要有: RX(數(shù)據(jù)接收線) 、 TX(數(shù)據(jù)發(fā)送) 、 GND(地線) 組成。41. STM32F103中的USART模塊支持: 同步串行數(shù)據(jù)收 和 異步串行數(shù)據(jù)收發(fā) 。42. STM32F103中的USART模塊支持: 全雙工異步通信 、 同步單向通信 和 半雙工單線通信 。43. STM32F103的USART模塊程序初始化中主要涉及: 波特率 、 數(shù)據(jù)位 、 校驗(yàn) 、 停止位 等設(shè)置。44. STM32F103的USART模塊的波特率最高可達(dá): 4.5Mbit/s 。45. 請(qǐng)利用STM32

27、F103的USART模塊實(shí)現(xiàn)與計(jì)算機(jī)之間通信,STM32F103發(fā)送:Please input data!:到計(jì)算機(jī),計(jì)算機(jī)利用串口調(diào)試軟件接收數(shù)據(jù),然后計(jì)算機(jī)發(fā)送數(shù)據(jù)到STM32F103,并通過(guò)開發(fā)析上的LCD顯示出接收的數(shù)據(jù)。分析:如圖所示,采用串口2(USART2),用到PA2、PA3兩個(gè)管腳,STM32F103的USART配置成波特率:9600bit/s,數(shù)據(jù)位8位,停止位1位,校驗(yàn)位無(wú)。數(shù)據(jù)接收采用中斷方式進(jìn)行。/*說(shuō)明:本程序是功能是STM32通過(guò)串口發(fā):Please input data!:對(duì)方通過(guò)串口發(fā)送數(shù)據(jù),本STM32采用中斷接收數(shù)據(jù),保存在RxBuffer*/#inclu

28、de stm32f10x.h#include system_stm32f10x.h#include stm32f10x_gpio.h#include stm32f10x_rcc.h#include stm32f10x_usart.h#include misc.h#include lcd.h#include /*/ char TxBuffer=Please input data!:; char RxBuffer=0; char TxCounter; char RxCounter;/*中斷第二級(jí)配置*/void NVIC_Configuration(void) NVIC_InitTypeDef N

29、VIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);/*中斷第三級(jí)配置*/void UsartIT_Configuration(void)

30、 USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);/*USART初始化*/void usart_init(void)GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA| RCC_APB2Periph_AFIO,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); /RX管腳 GPIO_InitStruct

31、ure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); /TX管腳 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructu

32、re);USART_InitStructure.USART_BaudRate = 9600;USART_InitStructure.USART_WordLength= USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitSt

33、ructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART2, &USART_InitStructure);USART_Cmd(USART2, ENABLE);/*向串口發(fā)送一字符串*/void USART_SendString(char *str,u8 length) u8 temp; for(temp=0;templength;temp+) USART_SendData(USART2, strtemp);while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) = RESE

34、T);USART_ClearFlag(USART2, USART_FLAG_TXE); /*主程序*/int main(void) usart_init();UsartIT_Configuration();NVIC_Configuration();_set_BASEPRI(0x00);/一級(jí)中斷開關(guān)使能STM3210B_LCD_Init();USART_SendString(TxBuffer,strlen(TxBuffer);/*/while(1) LCD_DisplayStringLine(Line4,Receive Data:); LCD_DisplayStringLine(Line5,R

35、xBuffer); 第8章 SPI結(jié)構(gòu)及應(yīng)用46. SPI主從設(shè)備需共享時(shí)鐘線,因此稱為:同步串行通信總線。47. SPI總線采用主從連接架構(gòu),通信雙方分為:主控端(Master)和從動(dòng)端(Slave)。48. SPI接口的硬件連接線共有4根,分別是:設(shè)備片選線SS、時(shí)鐘信號(hào)線SCLK、串行輸出數(shù)據(jù)線MOSI、串行輸入數(shù)據(jù)線MISO。49. STM32F103中的SPI總線通信中數(shù)據(jù)幀格式有:8位數(shù)據(jù)和16位數(shù)據(jù)。50. STM32F103中的SPI總線支持 硬件CRC校驗(yàn) 以實(shí)現(xiàn)可靠通信。51. 請(qǐng)利用STM32F103的SPI總線向LED顯示模塊發(fā)送顯示信息,在LED上顯示“”。如圖所示硬

36、件連接。分析:本題主要是利用STM32F103的SPI模塊向74LS595芯片發(fā)送數(shù)據(jù),STM32F103作為主設(shè)備,74LS595作為從設(shè)備,硬件連接使用SPI1的PA7(MOSI)、PA5(CLK)和NSS(PA4)。#include stm32f10x.h#include stm32f10x_GPIO.h#include stm32f10x_spi.h#include stm32f10x_rcc.h/* 此表為7段共陽(yáng)數(shù)碼管顯示09的字模,數(shù)碼管上編號(hào)為“SRK”可用*/unsigned char DISP_TAB12 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x

37、82,0xf8,0x80,0x90,0xff,0xbf;unsigned short DISP_TAB210=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,;const unsigned char DigTab8 =0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; / 定義數(shù)碼管位選數(shù)據(jù)unsigned char dispBuf8; / 定義顯示緩沖區(qū)void DelayMs(int n) unsigned int i,j;for (i = 0;in;+i)for(j=0;j8000;+j);void SPI

38、_LED_Init(void)GPIO_InitTypeDef GPIO_InitStructure;SPI_InitTypeDef SPI_InitStructure;RCC_PCLK2Config(RCC_HCLK_Div2);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1|RCC_APB2Periph_AFIO,ENABLE);SPI_Cmd(SPI1, DISABLE); /必須先禁能,才能改變MODEGPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7

39、;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_Ini

40、tStructure);SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;SPI_InitStructure.SPI_Mode = SPI_Mode_Master;SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;SPI_InitStructure.SPI_NSS = SPI_NSS_Soft

41、;SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;SPI_InitStructure.SPI_CRCPolynomial = 7;SPI_Init(SPI1, &SPI_InitStructure);SPI_Cmd(SPI1, ENABLE);/*說(shuō)明:在LED上顯示的數(shù)據(jù),第ucX位,顯示ucData。參數(shù):ucX:位數(shù);ucData:顯示數(shù)據(jù)0-9;point:0=不帶小數(shù)點(diǎn),1=帶小數(shù)點(diǎn)*/void di

42、spDataPut(unsigned char ucX, unsigned char ucData,unsigned char point)unsigned short uldata;dispBufucX & 0x07 = ucData;if(point=1)uldata=(DigTabucX8)+DISP_TAB2dispBufucX & 0x07;elseuldata=(DigTabucX8)+DISP_TABdispBufucX & 0x07; GPIO_ResetBits(GPIOA,GPIO_Pin_4);SPI_I2S_SendData(SPI1, uldata); GPIO_Se

43、tBits(GPIOA,GPIO_Pin_4);int main(void)unsigned char n=0;SPI_LED_Init();while(1)for (n=0; n=7; n+) dispDataPut(n,n,0); DelayMs(5); 第11章 ADC結(jié)構(gòu)及應(yīng)用52. A/D轉(zhuǎn)換是將:連續(xù)變化的模擬信號(hào)變?yōu)閷?duì)應(yīng)的離散數(shù)字信號(hào)。53. 模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)包含三個(gè)關(guān)鍵步驟:采樣、量化和編碼。54. A/D轉(zhuǎn)換的主要技術(shù)指示有:位數(shù)、采樣速率、分辨率等等。55. STM32F103的ADC模塊是一個(gè)12位逐次逼近型ADC,包含18個(gè)通道,可測(cè)量16個(gè)外部信號(hào)和2個(gè)內(nèi)部信號(hào)

44、。56. 當(dāng)STM32F103的ADC模塊被測(cè)電壓范圍是03.3V連續(xù)變化的模擬信號(hào),ADC轉(zhuǎn)換的參考電壓是3.3V,請(qǐng)問(wèn)當(dāng)被測(cè)信號(hào)為3.3V時(shí)對(duì)應(yīng)的轉(zhuǎn)換后的數(shù)字量是:1111 1111 1111(十進(jìn)制4096,十六進(jìn)制0xfff),當(dāng)被測(cè)信號(hào)為0V時(shí)對(duì)應(yīng)的數(shù)字量是:0000 0000 0000。當(dāng)轉(zhuǎn)換后的數(shù)字量為1000 0000 0000(十進(jìn)制2048,十六進(jìn)制0x800)時(shí)對(duì)應(yīng)的模擬電壓為:1.65V。57. 請(qǐng)利用STM32F103的ADC模塊轉(zhuǎn)換如圖所示模擬電壓并能過(guò)LCD顯示器顯示被測(cè)信號(hào)電壓值。 分析:PB0對(duì)應(yīng)ADC1模塊的8號(hào)通道。擬采用軟件觸發(fā)采樣,通過(guò)查詢標(biāo)志位,獲取

45、轉(zhuǎn)換結(jié)果。程序流程圖如上圖所示。#include stm32f10x.h#include stm32f10x_conf.h#include stdio.h#include lcd.h#include delay.hvoid adc_init(void) GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; /*使能GPIOB時(shí)鐘*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); /*配置PB0為模擬輸入端口*/ GPIO_InitStruct

46、ure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE); /*ADC1的配置*/ ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStruct

47、ure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; 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_RegularChanne

48、lConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_13Cycles5); /ADC1 規(guī)則 channel8 配置 ADC_Cmd(ADC1, ENABLE); /能ADC1 ADC_ResetCalibration(ADC1); /使能ADC1 復(fù)位校準(zhǔn)寄存器 while(ADC_GetResetCalibrationStatus(ADC1);/檢查校準(zhǔn)寄存器狀態(tài) ADC_StartCalibration(ADC1); /啟動(dòng)ADC校準(zhǔn) while(ADC_GetCalibrationStatus(ADC1); /檢查校準(zhǔn)狀態(tài)#define V_R

49、EF 3.300float adc_read(void) unsigned int i; int AD_value; ADC_SoftwareStartConvCmd(ADC1, ENABLE); /ADC軟件啟動(dòng)轉(zhuǎn)換 while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC);/等待ADC轉(zhuǎn)換結(jié)束 AD_value = ADC_GetConversionValue(ADC1); /讀取ADC轉(zhuǎn)換的12位數(shù)據(jù) return AD_value* V_REF /(0xfff);int main(void) float temp;char Buff30; STM3210B_LCD_Init();/LCD初始化 LCD_Clear(Blue); /背景顏色 LCD_SetBackColor(Magenta); /文字顏色 LCD_SetTextColor(Black);LCD_DisplayStringLine(Line2, ADC TEST ); LCD_DisplayStringLine(Line4, Vref = 3.3V );adc_init();while(1)temp = adc

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論