在实现delay_us()微妙延时的时候,出现了一些问题。
亮:5000us * 10 = 50 000us = 50ms
灭:5000us * 10 = 50 000us = 50ms
亮+灭=100ms = 0.1s
但是实现出来的是大概1秒亮一次,一秒灭一次。
如果将循环变成100的话就是10S一闪,10s一灭,自己粗略记时了。
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
int i;
HAL_GPIO_WritePin(GPIOB, BlueLed_Pin, GPIO_PIN_RESET);
for(i=0; i<10; i++)
{
delay_us(5000);
}
HAL_GPIO_WritePin(GPIOB, BlueLed_Pin, GPIO_PIN_SET);
for(i=0; i<10; i++)
{
delay_us(5000);
}
}
/* USER CODE END 3 */
void delay_us(uint16_t us)
{
uint16_t differ = 60000-us;
HAL_TIM_Base_Start(&htim6);
__HAL_TIM_SET_COUNTER(&htim6, differ);
while( differ < 60000 )
{
differ = __HAL_TIM_GET_COUNTER(&htim6);
}
HAL_TIM_Base_Stop(&htim6);
}