然后调试到HAL_Delay()方法的内部发现 HAL_GetTick( )函数一直返回 __weak void HAL_Delay(uint32_t Delay) { uint32_t tickstart = HAL_GetTick(); uint32_t wait = Delay; /* Add a freq to guarantee minimum wait */ if (wait < HAL_MAX_DELAY) { wait += (uint32_t)(uwTickFreq); } ...
stm32程序卡死在if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE),该怎么解决啊 ...
GetTick()是HAL函数中的一个函数,用于获取系统滴答定时器的当前计数值。滴答定时器是STM32微控制器上的一个硬件定时器,它以固定的时间间隔递增计数器的值。通过调用GetTick()函数,开发人员可以获取当前系统的运行时间,通常以毫秒为单位。 使用GetTick()函数可以实现一些时间相关的功能,例如延时、定时器、任务调度等。...
// 获取当前的SysTick计数值 while (HAL_GetTick() - start < ms); // 等待延时时间过去 } ...
这个函数是定义了一个32位的变量Delay,然后HAL_GetTick()是一个记录上电时间的函数,它是实时变化的,每1ms会变化一次,然后我们记录一下函数开始时的时间,记录在tickstart里面,把我们需要延时的时间记录在wait里面,最后让HAL_GetTick()和tickstart作差,直到等于wait,也就是我们需要延时的时间。这样就可以实现延时的功...
HAL库下的文件很多,有一部分文件的功能可以归为一类,例如stm32mp1xx_hal_i2c.h/c、stm32mp1xx_hal_adc.h/c、stm32mp1xx_hal_dma.h/c等等这些文件,他们属于一些外设的配置文件,那么我们后面会以stm32mp1xx_hal_ppp.h/c来统称这些文件。有的是特殊文件,我们会重点介绍。HAL库关键文件介绍如下表:表...
* @retval None*/__weakvoidHAL_Delay(__IO uint32_t Delay) { uint32_t tickstart=HAL_GetTick(); uint32_t wait=Delay;/*Add a period to guarantee minimum wait*/if(wait <HAL_MAX_DELAY) { wait++; }while((HAL_GetTick() - tickstart) <wait) ...
定时器时钟源来自APB1和APB2。默认情况下,STM32CubeMX使用Systick作为时基给其它程序提供计时,例如HAL...
HAL_I2C_Mem_Read(&hi2c1,dev_addr,reg_addr,I2C_MEMADD_SIZE_8BIT,p_data,data_size,0x100) #define delay_ms HAL_Delay #define get_ms(p) do{*p = HAL_GetTick();}while(0) #define log_i(...) do {} while (0) #define log_e(...) do {} while (0) ...
voidHAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){// printf("IT IN\r\n");// printf("%d \r\n",HAL_GetTick());//置零设定电流值 PID时间if(huart->Instance == USART3) {// 将数据放入缓冲区circular_buffer.buffer[circular_buffer.head] = rxBuffer[0]; ...