2014计量学院-嵌入式系统试卷答案 - 图文(2)

2019-04-16 23:09

(3) 配置串口USART1,实现通过串口向PC机的串口助手打印一个字符串。例如:interrupt 0。写出相应的

程序。(5分)

在KEIL C Target option -> target中选择 useMicroLIB void GPIO_Configuration(void) {

/* 定义 GPIO 初始化结构体 GPIO_InitStructure */ GPIO_InitTypeDef GPIO_InitStructure;

/* 设置USART1的Tx脚(PA.9)为第二功能推挽输出模式 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA , &GPIO_InitStructure);

/* 设置USART1的Rx脚(PA.10)为浮空输入脚 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA , &GPIO_InitStructure); }

void USART_Configuration(void) {

USART_InitTypeDef USART_InitStructure; 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_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1 , &USART_InitStructure); USART_Cmd(USART1 , ENABLE); }

int fputc(int ch,FILE *f)

《嵌入式系统原理与应用 》课程试卷(A )参考答案及评分标准 第 6 页 共 12页

{ }

printf(\

(4) 写出整个外部中断以及串口输出的程序。(与第3小题相重合的部分程序不需要再写出)(10分)

#include \#include \

#include \#include \#include \

/* Private function prototypes -----------------------------------------------*/ void RCC_Configuration(void); void Init_GPIOs (void); void Delay(uint32_t nTime); void USART_Configuration(void); void EXTI_Configuration(void); void NVIC_Configuration(void); int main(void) {

/* Configure Clocks for Application need */ RCC_Configuration();

NVIC_Configuration(); Init_GPIOs(); USART_Configuration(); { } }

void Init_GPIOs (void) {

GPIO_InitTypeDef GPIO_InitStructure;

RCC_AHBPeriphClockCmd(LD_GPIO_PORT_CLK|USERBUTTON_GPIO_CLK, ENABLE);

/* Configure User Button pin as input */ EXTI_Configuration(); while(1)

USART_SendData(USART1,(unsigned char)ch);

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); return ch;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;//USERBUTTON_GPIO_PIN 《嵌入式系统原理与应用 》课程试卷(A )参考答案及评分标准 第 7 页 共 12页

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_Init(USERBUTTON_GPIO_PORT, &GPIO_InitStructure); }

void EXTI_Configuration() {

EXTI_InitTypeDef EXTI_InitStructure;

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource0); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource1); EXTI_InitStructure.EXTI_Line = EXTI_Line0|EXTI_Line1 ;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); }

void NVIC_Configuration() {

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

/* Enable and set EXTI0 Interrupt to the lowest priority */

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn ;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn ;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }

void EXTI0_IRQHandler(void) { }

《嵌入式系统原理与应用 》课程试卷(A )参考答案及评分标准 第 8 页 共 12页

printf(\

EXTI_GenerateSWInterrupt(EXTI_Line1); EXTI_ClearFlag(EXTI_Line0);

void EXTI1_IRQHandler(void) { }

6.在基于ARM-Cortex M3内核的芯片上编写程序实现如下功能。定义一个32个整数的一维数组,配置DMA和CPU进行数据搬移,分别计算分别使用DMA和CPU来搬移这个数组所花的时间,并将这两个结果用串口传输到上位机显示。(20分) 1. 画出所需要的电路图。(5分)或者参见第五题去掉按键部分电路

printf(\EXTI_ClearFlag(EXTI_Line1);

2. 画出程序的流程图。(5分)

3. 写出DMA和CPU搬移数据的过程以及串口输出所花时间的程序。(10分) #include \#include \#include \

《嵌入式系统原理与应用 》课程试卷(A )参考答案及评分标准 第 9 页 共 12页

#define BufferSize 32 vu16 CurrDataCounter = 0; vu32 Tick = 0;

uc32 SRC_Const_Buffer[BufferSize ] = {

0x01020304,0x05060708,0x090A0B0C,0x0D0E0F10, 0x11121314,0x15161718,0x191A1B1C,0x1D1E1F20, 0x21222324,0x25262728,0x292A2B2C,0x2D2E2F30, 0x31323334,0x35363738,0x393A3B3C,0x3D3E3F40, 0x41424344,0x45464748,0x494A4B4C,0x4D4E4F50, 0x51525354,0x55565758,0x595A5B5C,0x5D5E5F60, 0x61626364,0x65666768,0x696A6B6C,0x6D6E6F70, 0x71727374,0x75767778,0x797A7B7C,0x7D7E7F80 };

u32 DST_Buffer[BufferSize ]; void RCC_Configuration(void); void NVIC_Configuration(void); void GPIO_Configuration(void); void USART_Configuration(void); void DMA_Configuration(void); void SysTick_Configuration(void); int main(void) {

u8 i = 0;

u8 TickCntCPU = 0; u8 TickCntDMA = 0;

RCC_Configuration(); /* 设置 NVIC */ NVIC_Configuration(); /* 设置 GPIO 端口 */ GPIO_Configuration(); /* 设置 USART */ USART_Configuration(); /* DMA初始化 */ DMA_Configuration(); /* SysTick初始化 */ SysTick_Configuration(); Tick = 0;

for(i = 0; i < BufferSize; i++) {

/* 在 RAM 中开辟一片空间用做DMA目的空间 */

/* 定义 DMA 传输数目变量 */

/* 计时变量 */

《嵌入式系统原理与应用 》课程试卷(A )参考答案及评分标准 第 10 页 共 12页


2014计量学院-嵌入式系统试卷答案 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:光在建筑设计与室内设计中的应用

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: