




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件详细设计报告 int main(void) /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 板载LED初始化 */ LED_GPIO_Init(); /* 板子按键初始化 */ KEY_GPIO_Init(); /* 无限循环 */ while (1) if(KEY1_StateRead()=KEY_DOWN) LED1_ON; if(KEY2_StateRead()=KEY_DOWN) LED2_ON; if(KEY3_StateRead()=KEY_DOWN) LED1_OFF; LED2_OFF; /* * 函数功能: 系统时钟配置 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */void SystemClock_Config(void) RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; / 外部晶振,8MHz RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; / 9倍频,得到72MHz主时钟 HAL_RCC_OscConfig(&RCC_OscInitStruct); RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; / 系统时钟:72MHz RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; / AHB时钟:72MHz RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; / APB1时钟:36MHz RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; / APB2时钟:72MHz HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2); / HAL_RCC_GetHCLKFreq()/1000 1ms中断一次/ HAL_RCC_GetHCLKFreq()/100000 10us中断一次/ HAL_RCC_GetHCLKFreq()/1000000 1us中断一次 HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); / 配置并启动系统滴答定时器 /* 系统滴答定时器时钟源 */ HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); /* 系统滴答定时器中断优先级配置 */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);/* * * File Name : stm32f1xx_hal_msp.c * Description : This file provides code for the MSP Initialization * and de-Initialization codes. * */* Includes -*/#include stm32f1xx_hal.h/* USER CODE BEGIN 0 */* USER CODE END 0 */* * Initializes the Global MSP. */void HAL_MspInit(void) /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ _HAL_RCC_AFIO_CLK_ENABLE(); HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); /* System interrupt init*/ /* MemoryManagement_IRQn interrupt configuration */ HAL_NVIC_SetPriority(MemoryManagement_IRQn, 0, 0); /* BusFault_IRQn interrupt configuration */ HAL_NVIC_SetPriority(BusFault_IRQn, 0, 0); /* UsageFault_IRQn interrupt configuration */ HAL_NVIC_SetPriority(UsageFault_IRQn, 0, 0); /* DebugMonitor_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DebugMonitor_IRQn, 0, 0); /* SysTick_IRQn interrupt configuration */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */* USER CODE BEGIN 1 */* USER CODE END 1 */* * */* * */* Includes -*/#include stm32f1xx_hal.h#include stm32f1xx.h#include stm32f1xx_it.h/* USER CODE BEGIN 0 */* USER CODE END 0 */* External variables -*/*/* Cortex-M3 Processor Interruption and Exception Handlers */ /*/* brief This function handles Non maskable interrupt.*/void NMI_Handler(void) /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ /* USER CODE END NonMaskableInt_IRQn 0 */ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ /* USER CODE END NonMaskableInt_IRQn 1 */* brief This function handles Hard fault interrupt.*/void HardFault_Handler(void) /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) /* USER CODE BEGIN HardFault_IRQn 1 */ /* USER CODE END HardFault_IRQn 1 */* brief This function handles Memory management fault.*/void MemManage_Handler(void) /* USER CODE BEGIN MemoryManagement_IRQn 0 */ /* USER CODE END MemoryManagement_IRQn 0 */ while (1) /* USER CODE BEGIN MemoryManagement_IRQn 1 */ /* USER CODE END MemoryManagement_IRQn 1 */* brief This function handles Prefetch fault, memory access fault.*/void BusFault_Handler(void) /* USER CODE BEGIN BusFault_IRQn 0 */ /* USER CODE END BusFault_IRQn 0 */ while (1) /* USER CODE BEGIN BusFault_IRQn 1 */ /* USER CODE END BusFault_IRQn 1 */* brief This function handles Undefined instruction or illegal state.*/void UsageFault_Handler(void) /* USER CODE BEGIN UsageFault_IRQn 0 */ /* USER CODE END UsageFault_IRQn 0 */ while (1) /* USER CODE BEGIN UsageFault_IRQn 1 */ /* USER CODE END UsageFault_IRQn 1 */* brief This function handles Debug monitor.*/void DebugMon_Handler(void) /* USER CODE BEGIN DebugMonitor_IRQn 0 */ /* USER CODE END DebugMonitor_IRQn 0 */ while (1) /* USER CODE BEGIN DebugMonitor_IRQn 1 */ /* USER CODE END DebugMonitor_IRQn 1 */* brief This function handles System tick timer.*/void SysTick_Handler(void) /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); HAL_SYSTICK_IRQHandler(); /* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */*/* STM32F1xx Peripheral Interrupt Handlers */* Add here the Interrupt Handlers for the used peripherals. */* For the available peripheral interrupt handler names, */* please refer to the startup file (startup_stm32f1xx.s). */*/* USER CODE BEGIN 1 */* USER CODE END 1 */void KEY_GPIO_Init(void) /* 定义IO硬件初始化结构体变量 */ GPIO_InitTypeDef GPIO_InitStruct;/* 使能(开启)KEY引脚对应IO端口时钟 */ KEY1_RCC_CLK_ENABLE(); KEY2_RCC_CLK_ENABLE(); KEY3_RCC_CLK_ENABLE(); /* 配置KEY1 GPIO:输入下拉模式 */ GPIO_InitStruct.Pin = KEY1_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(KEY1_GPIO, &GPIO_InitStruct); /* 配置KEY2 GPIO:输入上拉模式 */ GPIO_InitStruct.Pin = KEY2_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(KEY2_GPIO, &GPIO_InitStruct); /* 配置KEY3 GPIO:输入上拉模式 */ GPIO_InitStruct.Pin = KEY3_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(KEY3_GPIO, &GPIO_InitStruct);/* * 函数功能: 读取按键KEY1的状态 * 输入参数:无 * 返 回 值: KEY_DOWN:按键被按下; * KEY_UP :按键没被按下 * 说 明:无。 */KEYState_TypeDef KEY1_StateRead(void) /* 读取此时按键值并判断是否是被按下状态,如果是被按下状态进入函数内 */ if(HAL_GPIO_ReadPin(KEY1_GPIO,KEY1_GPIO_PIN)=KEY1_DOWN_LEVEL) /* 延时一小段时间,消除抖动 */ HAL_Delay(10); /* 延时时间后再来判断按键状态,如果还是按下状态说明按键确实被按下 */ if(HAL_GPIO_ReadPin(KEY1_GPIO,KEY1_GPIO_PIN)=KEY1_DOWN_LEVEL) /* 等待按键弹开才退出按键扫描函数 */ while(HAL_GPIO_ReadPin(KEY1_GPIO,KEY1_GPIO_PIN)=KEY1_DOWN_LEVEL); /* 按键扫描完毕,确定按键被按下,返回按键被按下状态 */ return KEY_DOWN; /* 按键没被按下,返回没被按下状态 */ return KEY_UP;/* * 函数功能: 读取按键KEY2的状态 * 输入参数:无 * 返 回 值: KEY_DOWN:按键被按下; * KEY_UP :按键没被按下 * 说 明:无。 */KEYState_TypeDef KEY2_StateRead(void) /* 读取此时按键值并判断是否是被按下状态,如果是被按下状态进入函数内 */ if(HAL_GPIO_ReadPin(KEY2_GPIO,KEY2_GPIO_PIN)=KEY2_DOWN_LEVEL) /* 延时一小段时间,消除抖动 */ HAL_Delay(10); /* 延时时间后再来判断按键状态,如果还是按下状态说明按键确实被按下 */ if(HAL_GPIO_ReadPin(KEY2_GPIO,KEY2_GPIO_PIN)=KEY2_DOWN_LEVEL) /* 等待按键弹开才退出按键扫描函数 */ while(HAL_GPIO_ReadPin(KEY2_GPIO,KEY2_GPIO_PIN)=KEY2_DOWN_LEVEL); /* 按键扫描完毕,确定按键被按下,返回按键被按下状态 */ return KEY_DOWN; /* 按键没被按下,返回没被按下状态 */ return KEY_UP;/* * 函数功能: 读取按键KEY3的状态 * 输入参数:无 * 返 回 值: KEY_DOWN:按键被按下; * KEY_UP :按键没被按下 * 说 明:无。 */KEYState_TypeDef KEY3_StateRead(void) /* 读取此时按键值并判断是否是被按下状态,如果是被按下状态进入函数内 */ if(HAL_GPIO_ReadPin(KEY3_GPIO,KEY3_GPIO_PIN)=KEY3_DOWN_LEVEL) /* 延时一小段时间,消除抖动 */ HAL_Delay(10); /* 延时时间后再来判断按键状态,如果还是按下状态说明按键确实被按下 */ if(HAL_GPIO_ReadPin(KEY3_GPIO,KEY3_GPIO_PIN)=KEY3_DOWN_LEVEL) /* 等待按键弹开才退出按键扫描函数 */ while(HAL_GPIO_ReadPin(KEY3_GPIO,KEY3_GPIO_PIN)=KEY3_DOWN_LEVEL); /* 按键扫描完毕,确定按键被按下,返回按键被按下状态 */ return KEY_DOWN; /* 按键没被按下,返回没被按下状态 */ return KEY_UP;/* 包含头文件 -*/#include led/bsp_led.h/* 私有类型定义 -*/* 私有宏定义 -*/* 私有变量 -*/* 扩展变量 -*/* 私有函数原形 -*/* 函数体 -*/* * 函数功能: 板载LED灯IO引脚初始化. * 输入参数: 无 * 返 回 值: 无 * 说 明:使用宏定义方法代替具体引脚号,方便程序移植,只要简单修改bsp_led.h * 文件相关宏定义就可以方便修改引脚。 */void LED_GPIO_Init(void) /* 定义IO硬件初始化结构体变量 */ GPIO_InitTypeDef GPIO_InitStruct;/* 使能(开启)LED引脚对应IO端口时钟 */ LED1_RCC_CLK_ENABLE(); LED2_RCC_CLK_ENABLE(); /* 配置LED1引脚输出电压 */ HAL_GPIO_WritePin(LED1_GPIO, LED1_GPIO_PIN, GPIO_PIN_RESET); /* 配置LED2引脚输出电压 */ HAL_GPIO_WritePin(LED2_GPIO, LED2_GPIO_PIN, GPIO_PIN_RESET); /* 设定LED1对应引脚IO编号 */ GPIO_InitStruct.Pin = LED1_GPIO_PIN; /* 设定LED1对应引脚IO为输出模式 */ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; /* 设定LED1对应引脚IO操作速度 */ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; /* 初始化LED1对应引脚IO */ HAL_GPIO_Init(LED1_GPIO, &GPIO_InitStruct); /* 设定LED2对应引脚IO编号 */ GPIO_InitStruc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025短期公寓租赁合作协议范本
- 语言幼儿防疫知识培训内容课件
- 红酒培训基础知识大全课件
- 2025合作协议范本:讲座教授聘任合同示例
- 红茶鉴赏知识讲解课件
- 诗词竞赛知识培训课件
- 项目风险管理单记录与跟踪模板
- 文档资料归档与索引制作指南
- 大数据时代人工智能技术应用课程教案
- 企业形象塑造与品牌推广模板
- 红岩优秀读后感800字5篇
- GB/T 2679.7-2005纸板戳穿强度的测定
- GB/T 18884.2-2015家用厨房设备第2部分:通用技术要求
- 文化政策与法规(第一课)
- 色彩基础知识ppt
- 寻找消失的滇缅路:松山战痕课件
- 中小学教师职业道德规范解读
- 政府预算理论与实务(第四版)全套教学课件
- 四年级上册美术课件第1课 送给老师的花|沪教版
- 轧机设备安装施工方案
- 最新开工报告范文
评论
0/150
提交评论