### 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