赞
踩
所用材料:
STM32F103C8T6(最小系统板)
STM32cubemx(HAL库软件)
MD5(编程软件)
本节所学内容:
通过TIM3定时器实现LED闪烁;
其中LED-PC13;
第一步-新建工程
1.选择MCU-F103C8
第二步-GPIO设置
第三步-SYS设置
将DEBUG选线设置为Serial Wire
第四步-时钟设置
具体配置如下图
第五步-配置TIM定时器
第六步-文件导出至MD5
第七步-程序烧写
__HAL_TIM_CLEAR_IT(&htim3, TIM_IT_UPDATE);
HAL_TIM_Base_Start_IT(&htim3);
/*------------------------------------------------------------------
函数名称:TIM内部时钟中断回调函数
函数功能:实现运行指示灯的闪烁
函数参数:每过500ms跳进一次中断函数,实现一次LED电平翻转
-------------------------------------------------------------------*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM3)
{
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
}
}
main.c主要内容:
int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM3_Init(); /* USER CODE BEGIN 2 */ __HAL_TIM_CLEAR_IT(&htim3, TIM_IT_UPDATE); HAL_TIM_Base_Start_IT(&htim3); //内部定时器TIM3中断使能 /* USER CODE END 2 */ while (1) { } }
tim.c主要内容:
TIM_HandleTypeDef htim3; /* TIM3 init function */ void MX_TIM3_Init(void) { /* USER CODE BEGIN TIM3_Init 0 */ /* USER CODE END TIM3_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; /* USER CODE BEGIN TIM3_Init 1 */ /* USER CODE END TIM3_Init 1 */ htim3.Instance = TIM3; htim3.Init.Prescaler = 719; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 49999; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; if (HAL_TIM_Base_Init(&htim3) != HAL_OK) { Error_Handler(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN TIM3_Init 2 */ /* USER CODE END TIM3_Init 2 */ } void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) { if(tim_baseHandle->Instance==TIM3) { /* USER CODE BEGIN TIM3_MspInit 0 */ /* USER CODE END TIM3_MspInit 0 */ /* TIM3 clock enable */ __HAL_RCC_TIM3_CLK_ENABLE(); /* TIM3 interrupt Init */ HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM3_IRQn); /* USER CODE BEGIN TIM3_MspInit 1 */ /* USER CODE END TIM3_MspInit 1 */ } } void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) { if(tim_baseHandle->Instance==TIM3) { /* USER CODE BEGIN TIM3_MspDeInit 0 */ /* USER CODE END TIM3_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_TIM3_CLK_DISABLE(); /* TIM3 interrupt Deinit */ HAL_NVIC_DisableIRQ(TIM3_IRQn); /* USER CODE BEGIN TIM3_MspDeInit 1 */ /* USER CODE END TIM3_MspDeInit 1 */ } } /* USER CODE BEGIN 1 */ /*------------------------------------------------------------------ 函数名称:TIM内部时钟中断回调函数 函数功能:实现运行指示灯的闪烁 函数参数:每过500ms跳进一次中断函数,实现一次LED电平翻转 -------------------------------------------------------------------*/ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == TIM3) { HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); } } /* USER CODE END 1 */
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。