### CubeMX HAL

-------------

#### 开始项目

##### 1、 选择芯片类型 
stm32F103ZET6   stm32F407ZGT6

 ### 2、  sys

    定时器： Systick  Tim
    一般sysstick用于OS

##### 3、  RCC 

默认内部时钟，大多情况下配置为外部时钟，并设置频率

```C
__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
{
  /* Configure the SysTick to have interrupt in 1ms time basis*/
  if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U)
  {
    return HAL_ERROR;
  }

```

1000U  1ms 中断
500U   2ms 中断

修改中断函数   Core\Src\stm32f1xx_it.c
定义累加值
uint16_t systime；
```C
void SysTick_Handler(void)
{
  /* USER CODE BEGIN SysTick_IRQn 0 */
  systime++;
  if (systime>1000) 
  {
    HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
    systime=0;
  }
  /* USER CODE END SysTick_IRQn 0 */
  HAL_IncTick();
  /* USER CODE BEGIN SysTick_IRQn 1 */
  HAL_SYSTICK_IRQHandler();
  /* USER CODE END SysTick_IRQn 1 */
}
```
 以上程序可以烧录， 或通过定时器实现

 设置定时器：
 时钟还是8MHz,经过8分频后变成1MHz,即1微妙，然后累加值设置为500，则500微妙TIM3定时器将溢出执行一次中断，接下来我们先去使能TIM3溢出中断

Core\Src\stm32f1xx_it.c   TIM3_IRQHandle()
然后打开定时器中断

##### 4、  GPIO
HAL_GPIO_TogglePin

##### 5、 UART


##### 6、 makefile
arm-none-eabi-gcc -v 
