計算題
已知位帶別名基地址為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