
照着野火的教学视频编写了一个基本定时器的函数,其中用到的中断服务函数的子程序STM32f10x_it.c 结果编译有错误..\Output\Basic[ti](https://bbs.elecfans.com/zhuti_715_1.html)m.axf: Error: L6218E: Undefined symbol time (referred from stm32f10x_it.o). 意思是STM32f10x_it.c中变量time没有定义,但是我在这段程序的一开头就已经定义了time变量,见下面蓝色字体。 是在不知道怎么办了,请教一下各位大神 中断程序如下 /* Includes ------------------------------------------------------------------*/ #include "stm32f10x_it.h" #include "bsp_[LED](https://www.hqchip.com/app/957).h" #include "bsp_exti.h" #include "stm32f10x.h" #include "bsp_usart.h" #include "bsp_adc.h" #include "stm32f10x_tim.h" #include "bsp_BasicTim.h" int8_t ucTemp; extern uint16_t time; extern uint16_t ADC_conversionValue; /** @addtogroup Template_Project * @{ */ /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ /******************************************************************************/ /* Cortex-M3 Processor Exceptions Handlers */ /******************************************************************************/ /** * @brief This function handles NMI exception. * @param None * @retval : None */ void NMI_Handler(void) { } /** * @brief This function handles Hard Fault exception. * @param None * @retval : None */ void HardFault_Handler(void) { /* Go to infinite loop when Hard Fault exception occurs */ while (1) { } } /** * @brief This function handles Memory Manage exception. * @param None * @retval : None */ void MemManage_Handler(void) { /* Go to infinite loop when Memory Manage exception occurs */ while (1) { } } /** * @brief This function handles Bus Fault exception. * @param None * @retval : None */ void BusFault_Handler(void) { /* Go to infinite loop when Bus Fault exception occurs */ while (1) { } } /** * @brief This function handles Usage Fault exception. * @param None * @retval : None */ void UsageFault_Handler(void) { /* Go to infinite loop when Usage Fault exception occurs */ while (1) { } } /** * @brief This function handles SVCall exception. * @param None * @retval : None */ void SVC_Handler(void) { } /** * @brief This function handles [debug](https://www.elecfans.com/tags/DEBUG/) Monitor exception. * @param None * @retval : None */ void DebugMon_Handler(void) { } /** * @brief This function handles PendSVC exception. * @param None * @retval : None */ void PendSV_Handler(void) { } /** * @brief This function handles SysTick Handler. * @param None * @retval : None */ void SysTick_Handler(void) { } //串口中断服务函数 // void DEBUG_USART_IRQHandler(void) { if(USART_GetITStatus(DEBUG_USARTx, USART_FLAG_RXNE)==RESET) //也可以换成 if(USART_GetITStatus(DEBUG_USARTx, USART_IT_RXNE)!=RESET) { ucTemp = USART_ReceiveData(DEBUG_USARTx); USART_SendData(DEBUG_USARTx, ucTemp); } } //一.独立模式ADC,中断服务函数读取程序 /* void ADC_IRQHandler(void) { if(ADC_GetITStatus(ADC_x, ADC_IT_EOC) == SET) { ADC_conversionValue = ADC_GetConversionValue(ADC_x); } ADC_ClearITPendingBit(ADC_x, ADC_IT_EOC); } */ //基本定时器中断服务函数 void BASIC_TIM_IRQHandler(void) { //判断更新中断是否发生 if(TIM_GetITStatus(BASIC_TIM,TIM_IT_Update) != RESET) { time++; //清除中断标志位 TIM_ClearITPendingBit(BASIC_TIM,TIM_IT_Update); } } /******************************************************************************/ /* STM32F10x Peripherals Interrupt Handlers */ /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ /* available peripheral interrupt handler's name please refer to the startup */ /* file (startup_stm32f10x_xx.s). */ /******************************************************************************/ /** * @brief This function handles PPP interrupt request. * @param None * @retval : None */ void EXTI4_IRQHandler(void) { //判断是否进入中断 if(EXTI_GetFlagStatus(EXTI_Line4)!=RESET) { //中断服务程序 LED_G_TOGGLE; } //执行中断服务函数完毕后,清除中断标志位 EXTI_ClearITPendingBit(EXTI_Line4); } /** * @} */ /******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ |
stm32f407无法配置定时器2为全部dma
定时器使用DMA突发传输功能时,传入指针从常量数组改为变量数组后,传输功能异常。测试官方用例一样,是何原因?
STM32MP135D的TIM2使用ETR作为外部时钟时,无法使用PE15作为输入
STM32F103TBU6 封装是VFQFPN36 将PD0和PD1配置成CAN不成功是什么原因
分享一个PWM+DMA的BUG
串口DMA + 空闲中断收发 ?
F103RCT6芯片对AFIO->MAPR寄存器写入时出错
STM32的TIM触发SPI的DMA发送使用NSS时MSSI的问题
使用STM32捕获PWM时同时捕获2个通道时会出现捕获的频率值不准确的问题
HRTIM 变频控制输出的第一个周期频率异常
extern uint16_t time和uint16_t time不同的,前者只是全局声明,后者是定义。只需要再main.c中定义一个uint16_t time;即可。