You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.4 KiB
68 lines
1.4 KiB
### 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
|
|
|