STM32期末考试答案详解
更新时间:2023-11-11 00:24:02 阅读量: 教育文库 文档下载
- stm32期末设计推荐度:
- 相关推荐
简述嵌套向量中断控制器(NVIC)的主要特性。
答:STM32的嵌套向量中断控制器(NVIC) 管理着包括Cortex-M3核异常等中断,其和ARM处理器核的接口紧密相连,可以实现低延迟的中断处理,并有效地处理晚到的中断。STM32嵌套向量中断控制器(NVIC)的主要特性如下: q 具有43 个可屏蔽中断通道(不包含16 个Cortex-M3 的中断线)。 q 具有16 个可编程的优先等级。 q 可实现低延迟的异常和中断处理。 q 具有电源管理控制。 q 系统控制寄存器的实现。
1.简述STM32的ADC系统的功能特性。
答:STM32的ADC系统的主要功能特性包括如下几个方面:ADC开关控制、ADC时钟、ADC通道选择、ADC的转换模式、中断、模拟看门狗、ADC的扫描模式、ADC的注入通道管理、间断模式、ADC的校准模式、ADC的数据对齐、可编程的通道采样时间、外部触发转换、DMA请求、双ADC模式和温度传感器。
2.简述STM32的双ADC工作模式。
答:在有两个ADC的STM32器件中,可以使用双ADC模式。在双ADC模式里,根据ADC_CR1寄存器中DUALMOD[2:0]位所选的模式,转换的启动可以是ADC1主和ADC2从的交替触发或同时触发。双ADC工作模式主要包括如下几种:同时注入模式、同时规则模式、快速交替模式、慢速交替模式、交替触发模式和独立模式。
1.简述STM32的USART的功能特点。、
答:STM32的USART为通用同步异步收发器,其可以与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART还可以利用分数波特率发生器提供宽范围的波特率选择。
STM32的USART支持同步单向通信和半双工单线通信。同时,其也支持LIN(局部互连网),智能卡协议和IrDA(红外数据)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。STM32还具备多处理器通信能力。另外,通过多缓冲器配置的DMA方式,还可以实现高速数据通信。
1.简述STM32的高级控制定时器TIM1的结构。
答:STM32提供了一个高级控制定时器(TIM1)。TIM1由一个16位的自动装载计数器组成,它由一个可编程预分频器驱动。TIM1适合多种用途,包含测量输入信号的脉冲宽度,或者产生输出波形。使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。 高级控制定时器TIM1和通用控制定时器TIMx是完全独立的,它们不共享任何资源,因此可以同步操作。
2.简述STM32时钟的类型。
答:STM32提供了三种不同的时钟源,其都可被用来驱动系统时钟SYSCLK,这三种时钟源分别为:q HSI振荡器时 q HSE振荡器时钟 q PLL时钟 这三种时钟源还可以有以下2种二级时钟源:
q 32kHz低速内部RC,可以用于驱动独立看门狗和RTC。其中,RTC用于从停机/待机模式下自动唤醒系统。 q 32.768kHz低速外部晶振也可用来驱动RTC(RTCCLK)。
任一个时钟源都可被独立地启动或关闭,这样可以通过关闭不使用的时钟源来优化整个系统的功耗。
1.简述DMA控制器的基本功能。
答:STM32的DMA 控制器有7个通道,每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA 请求的优先权。DMA 控制器和Cortex-M3 核共享系统数据线执行直接存储器数据传输。因此,1 个DMA请求占用至少2 个周期的CPU 访问系统总线时间。为了保证Cortex-M3 核的代码执行的最小带宽,DMA 控制器总是在2 个连续的DMA 请求间释放系统时钟至少1 个周期。
NVIC和外部中断:配置中断0(LED绿灯闪1次),中断1(LED蓝灯闪2次),中断2三个中断(LED绿灯闪3次),执行顺序为0-->1-->2 。(默认中断0闪烁的是绿灯)按下按键,绿灯闪(一亮一灭)1次,蓝灯闪2次,然后绿灯闪3次,
1 / 14
中断结束。
#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); static volatile uint32_t TimingDelay; int main(void)
{ /* Configure Clocks for Application need */ RCC_Configuration(); SysTick_Config(16000000/ 2000); NVIC_Configuration(); /* Init I/O ports */ Init_GPIOs();
USART_Configuration(); EXTI_Configuration();
// printf(\ while(1) { // Delay(20); // printf(\ } }
void RCC_Configuration(void) { RCC_DeInit();
/* Enable HSI Clock */ RCC_HSICmd(ENABLE); /*!< Wait till HSI is ready */
while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET) {}
/* RCC_PLLCmd(DISABLE); RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_3,RCC_PLLDiv_2); RCC_PLLCmd(ENABLE); */ /*!< Wait till PLL is ready */
// while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) // {}
// RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
2 / 14
RCC_MSIRangeConfig(RCC_MSIRange_6); RCC_HSEConfig(RCC_HSE_OFF);
if(RCC_GetFlagStatus(RCC_FLAG_HSERDY) != RESET ) { while(1); }
/* Enable comparator clock LCD and PWR mngt */
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_LCD | RCC_APB1Periph_PWR, ENABLE); /* Enable ADC clock & SYSCFG */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_SYSCFG RCC_APB2Periph_USART1 , ENABLE); }
void Init_GPIOs (void)
{ GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIOs clock */
RCC_AHBPeriphClockCmd(LD_GPIO_PORT_CLK|USERBUTTON_GPIO_CLK, ENABLE); /* Configure User Button pin as input */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;//USERBUTTON_GPIO_PIN 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); /* Configure the GPIO_LED pins LD3 & LD4*/
GPIO_InitStructure.GPIO_Pin = LD_GREEN_GPIO_PIN | LD_BLUE_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(LD_GPIO_PORT, &GPIO_InitStructure);
//GPIO_LOW(LD_GPIO_PORT, LD_GREEN_GPIO_PIN); //GPIO_LOW(LD_GPIO_PORT, LD_BLUE_GPIO_PIN); /*Configure the USART1_GPIO_PORT */ /* Connect PA9 to USART1_Tx */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); /* Connect PA10 to USART1_Rx*/
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1); /* Configure USART1_Tx and USART1_Rx as alternate function */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Enable all GPIOs clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB |
3 / 14
|
RCC_AHBPeriph_GPIOC | RCC_AHBPeriph_GPIOD |
RCC_AHBPeriph_GPIOE | RCC_AHBPeriph_GPIOH, ENABLE); }
void USART_Configuration(void) { USART_InitTypeDef USART_InitStructure; USART_ClockInitTypeDef USART_ClockIni; 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_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_Init(USART1,&USART_InitStructure); USART_ClockIni.USART_Clock = USART_Clock_Disable; USART_ClockIni.USART_CPOL = USART_CPOL_Low; USART_ClockIni.USART_CPHA = USART_CPHA_2Edge; USART_ClockIni.USART_LastBit = USART_LastBit_Disable; USART_ClockInit(USART1,&USART_ClockIni); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); USART_Cmd(USART1,ENABLE) }
void EXTI_Configuration()
{ EXTI_InitTypeDef EXTI_InitStructure;
/定义PA0,PA1,PA2为外部中断输入通道/
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource0); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource1); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource2); /* Configure EXT1 Line 0 1 2 in interrupt mode trigged on Falling edge */
EXTI_InitStructure.EXTI_Line = EXTI_Line0|EXTI_Line1|EXTI_Line2 ; // PA0 for User button 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; #ifdef VECT_TAB_RAM //è?1?C/C++ Compiler\\Preprocessor\\Defined symbols?Dμ??¨ò?á?VECT_TAB_RAM£¨??3ìDò?a?ü???úèYμ?±í??£? NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); //?ò?úRAMμ÷ê? #else //è?1???óD?¨ò?VECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);//?ò?úFlashà?μ÷ê?
4 / 14
#endif //?áê??D??ó??? 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); NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn ;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
void Delay(uint32_t nTime) { TimingDelay = nTime; while(TimingDelay != 0); }
void TimingDelay_Decrement(void) {
if (TimingDelay != 0x00) { TimingDelay--; } }
int fputc(int ch,FILE *f)
{ USART_SendData(USART1,(unsigned char)ch); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); return ch; }
#include \#include \
void NMI_Handler(void){} void HardFault_Handler(void)
{ /* Go to infinite loop when Hard Fault exception occurs */ while (1) { } }
void MemManage_Handler(void)
{ /* Go to infinite loop when Memory Manage exception occurs */ while (1) { }
5 / 14
}
void BusFault_Handler(void)
{/* Go to infinite loop when Bus Fault exception occurs */ while (1) { } }
void UsageFault_Handler(void)
{ /* Go to infinite loop when Usage Fault exception occurs */ while (1) {} }
void SVC_Handler(void){}
void DebugMon_Handler(void){} void PendSV_Handler(void){} void SysTick_Handler(void) {
TimingDelay_Decrement(); }
void DMA1_Channel1_IRQHandler (void){} void RTC_WKUP_IRQHandler(void){} void EXTI0_IRQHandler(void) { int i; GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i<500000;i++){} GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i<500000;i++){} EXTI_GenerateSWInterrupt(EXTI_Line1); EXTI_ClearFlag(EXTI_Line0); }
void EXTI1_IRQHandler(void) { int i; GPIO_TOGGLE(LD_GPIO_PORT ,LD_BLUE_GPIO_PIN ); for(i=0;i<500000;i++){} GPIO_TOGGLE(LD_GPIO_PORT ,LD_BLUE_GPIO_PIN ); for(i=0;i<500000;i++){} GPIO_TOGGLE(LD_GPIO_PORT ,LD_BLUE_GPIO_PIN ); for(i=0;i<500000;i++){} GPIO_TOGGLE(LD_GPIO_PORT ,LD_BLUE_GPIO_PIN ); for(i=0;i<500000;i++){} EXTI_GenerateSWInterrupt(EXTI_Line2); EXTI_ClearFlag(EXTI_Line1); }
void EXTI2_IRQHandler(void) { int i;
6 / 14
GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i<500000;i++){} GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i<500000;i++){} GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i<500000;i++){} GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i<500000;i++){} GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i<500000;i++){} GPIO_TOGGLE(LD_GPIO_PORT ,LD_GREEN_GPIO_PIN ); for(i=0;i<500000;i++){} EXTI_ClearFlag(EXTI_Line2); }
/*void PPP_IRQHandler(void) { }*/ * @}
(配置的两个定时器通道的中断请求的时间间隔分别为1秒和2秒)红红每隔1秒闪烁1次,绿灯每隔2秒闪烁1次。 #include \#include \
/* 自定义同义关键字 ---------------*//* 自定义参数宏 --------------------------*/ /* 自定义函数宏 ------------------------*//* 自定义变量 ------------------*/ uint16_t CCR1_Val =2500; /*初始化输出比较通道1计数周期变量*/ //uint16_t CCR1_Val =5000;
uint16_t CCR2_Val =1250; /**/ //uint16_t CCR2_Val =2500; /**/ //uint16_t CCR3_Val =10000; /**/ //uint16_t CCR4_Val =5000; /**/
/* 自定义函数声明 -------------------------------------------------------*/ void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); void TIM_Configuration(void); * 函数名 : main* 函数描述 : 主函数* 输入参数 : 无 int main(void)
{ /* 设置系统时钟 */ RCC_Configuration(); /* 设置NVIC */
NVIC_Configuration(); /* 设置GPIO端口 */ GPIO_Configuration(); /* 设置 TIM */ TIM_Configuration();
7 / 14
while (1); }
* 函数名: RCC_Configuration* 函数描述 : 设置系统各部分时钟* 输入参数 : 无 void RCC_Configuration(void) {
/* 定义枚举类型变量 HSEStartUpStatus */ ErrorStatus HSEStartUpStatus; /* 复位系统时钟设置*/ RCC_DeInit();
/* 开启HSE*/
RCC_HSEConfig(RCC_HSE_ON);
/* 等待HSE起振并稳定*/
HSEStartUpStatus = RCC_WaitForHSEStartUp(); /* 判断HSE起是否振成功,是则进入if()内部 */ if(HSEStartUpStatus == SUCCESS)
{ /* 选择HCLK(AHB)时钟源为SYSCLK 1分频 */ RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* 选择PCLK2时钟源为 HCLK(AHB) 1分频 */ RCC_PCLK2Config(RCC_HCLK_Div1);
/* 选择PCLK1时钟源为 HCLK(AHB) 2分频 */ RCC_PCLK1Config(RCC_HCLK_Div2); /* 设置FLASH延时周期数为2 */ FLASH_SetLatency(FLASH_Latency_1); /* 使能FLASH预取缓存 */
FLASH_PrefetchBufferCmd(ENABLE);
/* 选择锁相环(PLL)时钟源为HSE 2分频,倍频数为8,则PLL输出频率为 8MHz * 4 = 32MHz */ RCC_PLLConfig(RCC_PLLSource_HSE, RCC_PLLMul_8,RCC_PLLDiv_2); /* 使能PLL */ RCC_PLLCmd(ENABLE); /* 等待PLL输出稳定 */ while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* 选择SYSCLK时钟源为PLL */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* 等待PLL成为SYSCLK时钟源 */ while(RCC_GetSYSCLKSource() != 0x08); }
/* 打开APB2总线上的GPIOA时钟*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB , ENABLE); }
* 函数名 : GPIO_Configuration* 函数描述 : 设置各GPIO端口功能 void GPIO_Configuration(void)
{ /* 定义GPIO初始化结构体 GPIO_InitStructure */ GPIO_InitTypeDef GPIO_InitStructure;
/* 设置PA.0,PA.1,PA.2为浮空输入(EXTI Line0)*/
8 / 14
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_Init(GPIOB , &GPIO_InitStructure); }
* 函数名 : NVIC_Configuration* 函数描述 : 设置NVIC参数 void TIM_Configuration(void) {
/*定襎IM_TimeBase初始化结构体?/
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /*定义TIM_OCInit初始化结构体*/
TIM_OCInitTypeDef TIM_OCInitStructure;
/*技术重载值为65535,预分频值为16000,时钟分割0,向上计数模式*/ TIM_TimeBaseStructure.TIM_Period=65535; TIM_TimeBaseStructure.TIM_Prescaler= 0; TIM_TimeBaseStructure.TIM_ClockDivision=0; TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure); /*设置预分频值,立即装入*/ TIM_PrescalerConfig( TIM2,3199,TIM_PSCReloadMode_Immediate); /*设置OC1,OC2通道,工作模式为计数器模式,使能比较匹配输出极性,时钟分割0,向上计数模式*/ TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_Timing; TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; TIM_OCInitStructure.TIM_Pulse=CCR1_Val; TIM_OC1Init(TIM2,&TIM_OCInitStructure); TIM_OCInitStructure.TIM_Pulse=CCR2_Val; TIM_OC2Init(TIM2,&TIM_OCInitStructure); /*TIM_OCInitStructure.TIM_Pulse=CCR3_Val; TIM_OC3Init(TIM2,&TIM_OCInitStructure); TIM_OCInitStructure.TIM_Pulse=CCR4_Val; TIM_OC4Init(TIM2,&TIM_OCInitStructure);*/ /*禁止预装载寄存器*/ TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Disable); TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Disable); // TIM_OC3PreloadConfig(TIM2,TIM_OCPreload_Disable); // TIM_OC4PreloadConfig(TIM2,TIM_OCPreload_Disable); /*使能TIM中断*/ TIM_ITConfig(TIM2,TIM_IT_CC1 | TIM_IT_CC2,ENABLE ); /*启动TIM计数*/ TIM_Cmd(TIM2,ENABLE); }
9 / 14
* 函数名 : NVIC_Configuration* 函数描述 : 设置NVIC参数 void NVIC_Configuration(void) { /* 定义NVIC初始化结构体 NVIC_InitStructure */ NVIC_InitTypeDef NVIC_InitStructure;
/* #ifdef...#else...#endif结构的作用是根据预编译条件决定中断向量表起始地址*/ #ifdef VECT_TAB_RAM
/* 中断向量表起始地址从 0x20000000 开始 */ NVIC_SetVectorTable(NVIC_VectTab_RAM , 0x0); #else /* VECT_TAB_FLASH */
/* 中断向量表起始地址从 0x80000000 开始 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH , 0x0); #endif
/* 选择NVIC优先级分组2 */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
/* 使能EXIT 0通道 ,2级先占优先级 ,0级次占优先级 */ NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
#include \#include \
extern uint16_t CCR1_Val; /*声明输出比较通道1计数周期变量*/ extern uint16_t CCR2_Val; extern uint16_t CCR3_Val; extern uint16_t CCR4_Val; void NMI_Handler(void) {}
void HardFault_Handler(void)
{ /* Go to infinite loop when Hard Fault exception occurs */ while (1) { } }
void MemManage_Handler(void)
{ /* Go to infinite loop when Memory Manage exception occurs */ while (1) { } }
void BusFault_Handler(void)
{ /* Go to infinite loop when Bus Fault exception occurs */ while (1) { } }
void UsageFault_Handler(void)
10 / 14
正在阅读:
STM32期末考试答案详解11-11
高职3+证书考试英语模拟试题205-07
简短文艺的句子02-06
神奇的图片03-04
高中物理教师述职(精选多篇)09-26
2022年同济大学交通运输工程学院808材料力学与结构力学之结构力04-18
中国会计标准国际趋同中存在的差异分析05-10
友情提醒(医保报销)03-02
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 期末
- 详解
- 答案
- 考试
- STM32