关注分享主机优惠活动
国内外VPS云服务器

基于STM32的实验室照明大师(如何用stm32写一个点灯的程序)

总结:初始化引脚和基本配置使用宏定义来定义引脚是高电平还是低电平。 所有引脚都为高电平。 原理图低电平亮,高电平灭。 使用宏定义来设置关闭灯和流量灯的时间。 延迟时间为: 首先关闭所有灯和循环水灯。

/* 用户代码开始标头 *//** ************ ******** ******** ****************************************************** * @file : main.c * @brief : 程序主体 ******************** ********* ********* ****************************************************** ** * @attention * * © 版权所有 (c) 2021 STMicroelectronics * 禁止未经授权的复制。 * * 该软件组件由 ST 根据 BSD 3- 条款许可证 *“许可证”获得许可。 * 除非按照许可,否则您不得使用此文件。 许可证副本可从以下位置获取:* 开源.org/licenses/BSD-3- 条款 ************************************* ****************************************************** **************** *//* 用户代码结束标头 *//* -------[ k4]---------------- ----------------[k4 ]-----[ k4]- ---------[ k4]----- -- ]-*//**初始化引脚和32个基本设置**/#include "main.h"#include "gpio.h"/* 对于私有 -[k4 ]--[ 包含 k4 ]--------[ k4]--- ---- [ k4]-------- ----------------[k4 ]---[ k4]---[ k4 ]---*//* 包含用户代码开始 *//** 使用宏定义在**/#define文件中设置32引脚高(开)或低(关)d0on HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0, GPIO_PIN_RESET)#define led1on HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1, GPIO_PIN_RESET)#define led2on HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2, GPIO_PIN_RESET)#define led3on HAL_GPIO_WritePin( IOC,GPIO_PIN_3, GPIO_PIN_RESET)#在HAL_GPIO_WritePin上定义LED4(GPIOC,GPIO_PIN_4 ), GPIO_PIN_RESET)#定义 LED5on HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5, GPIO_PIN_RESET)#定义 LED6on HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6, GPIO_PIN_RESET)#定义 LED 0 关闭 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0, GPIO_PIN_SET)#定义 LED1off HAL_GPIO_WriteP在(GPIOC,GPIO_PIN_1,GPIO_PIN_SET) #define LED2off HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2, GPIO_PIN_SET)#define LED3off HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,GPIO_PIN_SET)#define LED4off HAL_GPIO_WritePin(GPIOC,GPIO_PIN_4, GPIO_PIN_SET)#define LED5off HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5, GPIO_PIN_SET)#define LED6off HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6, GPIO_PIN_SET)#define LED7off HAL_GPIO _WritePin(GPIOC, GPIO_PIN_7、GPIO_PIN_SET)#define ledaoff HAL_GPIO_WritePin (GPIOC,GPIO_PIN_All,GPIO_PIN_SET)//所有PC引脚均为高电平(示意图为低电平开启,高电平关闭)/**使用宏定义设置时间** /#define time 100void gd()//关闭light {ledaoff;}void lsd()//水灯{led0on;HAL_Delay(time);//延迟时间是一个时间值 led0off;HAL_Delay(time) ;led1on;HAL_Delay(time);HAL_Delay(time); LED2on;HAL_Delay(时间);LED2off;HAL_Delay(时间);LED3on;HAL_Delay(时间);LED3off;HAL_Delay(时间);LED4on;HAL_Delay(时间);LED4off;HAL_Delay(时间);LED5on;HAL_Delay(时间);LED5off ;HAL_Delay(时间);LED6on;HAL_Delay(时间);LED6OFF;HAL_Delay(时间);LED7on;HAL_Delay(time);led7off;HAL_Delay(time);}/* 用户代码结束包括 *//* Private typedef -------[k4 ]----------------[ k4]---------------- ----------------[k4 ] ]-*//* 用户代码起始 PTD *//* 用户代码结束 PTD *//* 私有定义 -------[k4 ] ----------------[ k4] ]---------------[k4 ][ k4]---------------[ k4] --*//* 用户代码开始 PD *//* 用户代码结束 PD *//* 私有宏 ------[k4 ][ k4]---------------[ k4] -----------------[k4 ] ]---------------- [ k4]--*//* 用户代码开始 PM *//* 用户代码结束 PM *//* 私有变量 ------[ k4 ]---------------- ----------------[k4 ] ----------------[ k4] ]*//* 用户代码开始 PV *//* 用户代码结束 PV *//* 私有函数原型 -------- ----------------[k4 ][ k4]---------------[ k4] -----*/void SystemClock_Config(void);/* 用户代码 BEGIN PFP *//* 用户代码 END PFP *//* Private u用户代码 ---------------- ----------------[k4 ] ]---------------- [ k4]-------*//* 用户代码开始 0 *//* 用户代码结束 0 *//** * @brief 应用程序入口观点。 * @retval int */int main(void){ /* 用户代码开始 1 */ /* 用户代码结束 1 */ /* MCU 配置 -----[ k4] ---------------- [k4 ] ]---------------[k4 ] [ k4]---------------[ k4 ] */ /* 重置所有外设并初始化闪存接口和Systick。 */ HAL_Init(); /* 用户代码 BEGIN Init */ /* 用户代码 END Init */ /* 配置系统时钟 */ SystemClock_Config() /* 用户代码 BEGIN SysInit */ /* 用户代码 END SysInit */ /* 初始化所有配置的外设 */ MX_GPIO_Init( ); * /gd(); //先关掉所有灯/* USER CODE END 2 */ /* 无限循环 */ /* USER CODE BEGIN WHILE */ while (1 ) { lsd();//循环水灯/ * USER CODE END WHILE * / /* 用户代码开始 3 */ } /* 用户代码结束 3 */}/** * @brief 系统时钟设置 * @retval None */void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct = { 0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** 根据 RCC_OscInitTypeDef 结构中指定的参数初始化 RCC 振荡器。 */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.HSIState = RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE InitStruct.PLL.PLLMUL = RCC_PLL_MUL9; 如果 (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK ) { Error_Handler(); } /** 初始化 CPU、AHB、APB 总线时钟 */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_ PL LCLK; truct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; 如果 (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { Error_Handler(); }}/* USER CODE BEGIN 4 *//* USER CODE END 4 *//** * @brief 发生错误时执行该函数。 * @retval None * /void Error_Handler(void){ /* 用户代码 BEGIN Error_Handler_Debug */ /* 用户可以添加自己的实现来报告 HAL 错误返回状态 */ __disable_irq(); while (1 ) { } /* 用户代码END Error_Handler_Debug */ }#ifdef USE_FULL_ASSERT/** * @brief 报告发生断言_param 错误的源文件名和源行号。 * @param file: 指向源文件名的指针 * @param line:assert_param 错误行的源编号 * @retval None */voidassert_failed(uint8_t *file, uint32_t line){ /* USER CODE BEGIN 6 */ /* User You can添加您自己的实现报告文件名和行号,例如: printf("Wrongparametersvalue:file %s on line %d/r/n", file, line) */ /* USER CODE END 6 */}#endif /* USE_FULL_ASSERT *//******************************** (C) 版权所有意法半导体 *****文件结束****/

未经允许不得转载:主机频道 » 基于STM32的实验室照明大师(如何用stm32写一个点灯的程序)

评论 抢沙发

评论前必须登录!