照着野火的教学视频编写了一个基本定时器的函数,其中用到的中断服务函数的子程序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****/ |
哪位大哥有stm32f103c8t6的keil编程实例源码呀?求
如何利用timer对一个频率变化范围比较广的中低频脉冲信号进行精确脉冲长度/周期/频率测定
能在一个程序中同时使用TIM的callback和uart的callback函数吗?
为什么我的stm32cubemx里高级定时器只能配置输出比较的互补输出,而不能直接配置PWM互补输出?
TCP客户端 周期性 发送数据,一段时间后会突然停止,是什么原因。
STM32F103VCT6有64K的RAM?
使用串口双机通信的问题
STM32F407输出方波最高频率
如何添加一个中断服务函数?
定时器回调函数只能执行一次
extern uint16_t time和uint16_t time不同的,前者只是全局声明,后者是定义。只需要再main.c中定义一个uint16_t time;即可。