计算题
已知位带别名基地址为0x220000000,计算位于位带区的0x200FFFFF地址的数据位7,计算它对应的位带别名区地址。
别名地址=位带别名基地址+字节偏移量x32+位号x4
别名地址=0x22000000+(0x200FFFFF -0x20000000)*32+7*4=0x220000807
分析如下基本定时器配置语句。 { …… TIM_Period = 999; TIM_Prescaler = 7199; …… } 假设系统时钟72MHz, 列式计算定时时间为多少秒?
根据T=(TIM Period+1)*(TIM Prescaler+1)/TIMxCLK
可得T= (999+1)* (7199+1)/72MHz=1秒
已知位带别名基地址为0x220000000,计算位于位带区的0x20000000 地址的数据位0,它对应的位带别名区地址。
别名地址=位带别名基地址+字节偏移量x32+位号x4
别名地址=0x22000000+(0x20000000 -0x20000000)*32+0*4=0x2200000FF
简述STM32 中断“抢占(Preempt)”和“挂起(Pending)”的的含义。
抢占是指高优先权的中断打断低优先级的中断,低优先级的中断暂停即挂起,处理器开始执行高优先级的中断服务程序。
已知看门狗的时钟频率是40KHZ,阅读看门狗的配置函数: void IWDG_Config(void){ IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); IWDG_SetPrescaler(IWDG_Prescaler_256); IWDG_SetReload(1563); IWDG_ReloadCounter(); IWDG_Enable();} 计算需要多长时间内必须喂狗系统才不会复位?
t=1563/(40K/256)=10s
编程题
阅读程序回答下面问题。 void USART1_Config(void) { USART_InitTypeDef USART_InitStructure; ...... USART_InitStructure.USART_BaudRate = 115200; 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); } (1)调用该函数后,USART1的传送速率是多少? (2)调用该函数后,USART1在数据传送过程中有无进行奇偶校验?
(1)调用该函数后,USART1的传送速率115200
(2)调用该函数后,USART1在数据传送过程中没有进行奇偶校验
阅读程序回答下面问题。 void USART1_Config(void) { USART_InitTypeDef USART_InitStructure; ...... USART_InitStructure.USART_BaudRate = 115200; 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); } (1)调用该函数后,USART1的工作模式是什么? (2)调用该函数后,USART1进行数据传送时一次传送的数据位数是几位?
(1)调用该函数后,USART1的工作模式既能发送有能接收
(2)调用该函数后,USART1进行数据传送时一次传送的数据位数是8位
阅读程序回答下面问题。 void USART1_Config(void) { USART_InitTypeDef USART_InitStructure; ...... USART_InitStructure.USART_BaudRate = 115200; 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); } (1)调用该函数后,设置的USART1数据格式中的停止位是几位? (2)调用该函数后,USART1在数据传送时是否使用了硬件流控制?
(1)调用该函数后,设置的USART1数据格式中的停止位是1位
(2)调用该函数后,USART1在数据传送时没有使用了硬件流控制
阅读程序回答下面问题。 void NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } (1)该函数设置的中断源的抢占优先级是多少?响应优先级是多少? (2)抢占优先级其他所能设置的值还有哪些? (3)响应优先级其他所能设置的值还有哪些?
(1) 该函数设置的中断源的抢占优先级为0,响应优先级为1
(2)抢占优先级其他所能设置的值还有1。
(3)响应优先级其他所能设置的值还有0,2,3,4,5,6,7
阅读程序回答下面问题。 void NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } (1)该函数是对哪个中断源的初始化? (2)该函数设置的中断源的抢占优先级是多少?响应优先级是多少?
(1)中断源来自EXTI4。
(2)该函数设置的中断源的抢占优先级为0,响应优先级为1