
/* USER CODE BEGIN 0 */
void delay_us(uint32_t ii)
{
	uint32_t temp;
	SysTick->LOAD=ii*8;
	SysTick->VAL=0x00;
	SysTick->CTRL=0x01;//2号位1使用内核时钟
	do
	{
		temp=SysTick->CTRL;
	}
	while(temp&0x01&&!(temp&(1<<16)));
	SysTick->CTRL=0X00;
	SysTick->VAL=0X00;
}
/* USER CODE END 0 */
/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */
  /* USER CODE END 1 */
  /* MCU Configuration--------------------------------------------------------*/
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* USER CODE BEGIN Init */
  /* USER CODE END Init */
  /* Configure the system clock */
  SystemClock_Config();
  /* USER CODE BEGIN SysInit */
  /* USER CODE END SysInit */
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
		//
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,1);
		delay_us(1);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,0);
		delay_us(1);
		
		
		//
  }
  /* USER CODE END 3 */
}
说明:这里虽然是理论上延时1um,但是实际上使用keil arm模拟使用了20um那个样子(但是奇怪的是使用Proteus 8.15模式的时候模拟1s时间,Proteus很接近1s,使用了2s,而是不是20s)
在实际使用C8T6的时候1s,单片式实际花费10s,可见这个函数很不严谨。远远不如HAL_DELAY()函数来的严谨(后来发现这个函数可能是准确的---但如果是准确的为什么产生1s时间时候单片机里面不对?难道是单片机有问题?这就涉及到测量单片机晶振频率的问题)
进一步追踪发现:即使使用定时器来产生1us的事情,keil arm也还是无法准确模拟时间,因此更有可能是keil arm软件无法准确模拟us时间,可能软件模拟本身需要很多us吧。那么也许代表着:这个函数可以准确计算时间
本实验采用外部高速时钟8MHZ,systemtick时钟频率8MHZ(没有使用72MHZ)



















