当前位置: 首页 > news >正文

推荐几个色情图片网站网络营销论文题目

推荐几个色情图片网站,网络营销论文题目,王爷追妻有点忙,郑州好的网站建设公司哪家好按键控制LED本质还是控制GPIO,和点亮一个LED灯没什么区别 点亮一个LED灯:是直接控制输出引脚,GPIO初始化推挽输出即可 按键控制LED:是按键输入信号从而控制输出引脚,GPIO初始化推挽输出一个引脚以外还得加一个GPIO上拉输入 但是…

按键控制LED本质还是控制GPIO,和点亮一个LED灯没什么区别

点亮一个LED灯:是直接控制输出引脚,GPIO初始化推挽输出即可

按键控制LED:是按键输入信号从而控制输出引脚,GPIO初始化推挽输出一个引脚以外还得加一个GPIO上拉输入

但是控制GPIO本质还是1.RCC时钟使能  2.结构体配置GPIO寄存器  3.控制GPIO

标准库写法

led.c

1.RCC时钟使能  2.结构体配置GPIO寄存器  3.控制GPIO(我们这里封装成函数ON;OFF;swtich)

#include "stm32f10x.h"                  // Device header
#include "delay.h"
void LED_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//1.RCC时钟使能GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);			 	//2.结构体配置GPIO寄存器GPIO_SetBits (GPIOA,GPIO_Pin_1 | GPIO_Pin_2);			//3.控制GPIO值为1
}/*** @brief  LED1灯亮* @param  无* @retval 无*/
void LED1_ON(void)
{GPIO_ResetBits (GPIOA,GPIO_Pin_1);			//控制LED1亮
}/*** @brief  LED2灯亮* @param  无* @retval 无*/
void LED2_ON(void)
{GPIO_ResetBits (GPIOA,GPIO_Pin_2);			//控制LED2亮
}/*** @brief  LED灭* @param  无* @retval 无*/
void LED1_OFF(void)
{GPIO_SetBits (GPIOA,GPIO_Pin_1);			//控制LED1灭
}/*** @brief  LED灭* @param  无* @retval 无*/
void LED2_OFF(void)
{GPIO_SetBits (GPIOA,GPIO_Pin_2);			//控制LED2灭
}/*** @brief  LED1灯状态切换* @param  无* @retval 无*/
void LED1_switch(void)
{if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_1) == 1){GPIO_ResetBits (GPIOA,GPIO_Pin_1);}else{GPIO_SetBits (GPIOA,GPIO_Pin_1);}
}/*** @brief  LED2灯状态切换* @param  无* @retval 无*/
void LED2_switch(void)
{if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_2) == Bit_SET){GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_RESET);}else{GPIO_WriteBit(GPIOA, GPIO_Pin_2, Bit_SET);}
}

led.h

#ifndef __LED_H
#define __LED_Hvoid LED_Init(void);
void LED1_ON(void);
void LED2_ON(void);
void LED1_OFF(void);
void LED2_OFF(void);
void LED1_switch(void);
void LED2_switch(void);#endif

key.c

这里按键获取函数采用的是delay检测,是阻塞式的函数,这不好等学到定时器中断我们再用定时器定时检测

    if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0)
    {
        Delay_ms(20);    //按下消抖
        while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0);
        Delay_ms(20);    //松开消抖
        keynum = 1;
    }

#include "stm32f10x.h"                  // Device header
#include "DELAY.h"
void KEY_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//1.RCC时钟使能GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_11;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);			 	//2.结构体配置GPIO寄存器}/*** @brief  按键获取函数* @param  无* @retval 按键值1->PB1,2->pb11*/
uint8_t KEY_Getstate(void)
{uint8_t keynum = 0;if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0){Delay_ms(20);	while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0);Delay_ms(20);keynum = 1;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0){Delay_ms(20);	while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0);Delay_ms(20);	keynum = 2;}		return keynum;
}

key.h

#ifndef __KEY_H
#define __KEY_Hvoid KEY_Init(void);
uint8_t KEY_Getstate(void);
#endif

main()

定义一个变量把按键状态接收,通过不同按键值来控制LED状态

#include "stm32f10x.h"                  // Device header
#include "Delay.h"  
#include "LED.h"
#include "KEY.h"uint8_t keynum;
int main ()
{KEY_Init();LED_Init();while(1){keynum = KEY_Getstate();if(keynum == 1){LED1_switch();}else if(keynum == 2){LED2_switch();}}
}

标准库写完了,接下来我们写HAL库

HAL库分三步

1.建工程

2.设配置

3.写代码

HAL库写法

一. 关于建工程请参考:江科大学习笔记之——HAL库点亮一个LED灯-CSDN博客在里面有详细步骤,简单易懂

二.配置设置

这里我设置错了应该是PB11,你们自己注意一下

ctrl+s生成代码

三.写代码

为了方便我们把LED,KEY单独拿出来放在System文件夹下

在cubeIDE里面想建立自己的.C.H文件步骤如下

1.建立文件夹

2.

 鼠标右键点击文件名–Properties

3. 进入Includes 添加文件的路径

同时还要增加源文件的路径

好准备工作做完了,上面cube ide的模块化是我自己在网上找半天才找到的方法:

STM32CubemxIDE 导入自定义的.c和.h文件_stm32cubeide添加源文件-CSDN博客

本想问别人但是想想还是提高自己解决问题的能力吧,所以我就花了更多时间去自己搜索解决方法。

现在开始写代码

模块代码的逻辑都一样只是把标准库的函数我就不多赘述了,换成了HAL库的函数

led.c

这里LED灯的熄灭与点亮有,电平翻转函数HAL_GPIO_TogglePin,关于HAL库的函数可以看:

HAL库函数合集-CSDN博客


#include "gpio.h"/*** @brief  LED1灯亮* @param  无* @retval 无*/
void LED1_ON(void)
{HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);//控制LED1亮
}/*** @brief  LED2灯亮* @param  无* @retval 无*/
void LED2_ON(void)
{HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);	//控制LED2亮
}/*** @brief  LED灭* @param  无* @retval 无*/
void LED1_OFF(void)
{HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);//控制LED1灭
}/*** @brief  LED灭* @param  无* @retval 无*/
void LED2_OFF(void)
{HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);//控制LED2灭
}/*** @brief  LED1灯状态切换* @param  无* @retval 无*/
void LED1_switch(void)
{HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1);
}/*** @brief  LED2灯状态切换* @param  无* @retval 无*/
void LED2_switch(void)
{HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_2);
}

led.h

#ifndef __LED_H
#define __LED_Hvoid LED1_ON(void);
void LED2_ON(void);
void LED1_OFF(void);
void LED2_OFF(void);
void LED1_switch(void);
void LED2_switch(void);#endif

key,c


#include "gpio.h"
/*** @brief  按键获取函数* @param  无* @retval 按键值1->PB1,2->pb11*/
uint8_t KEY_Getstate(void)
{uint8_t keynum = 0;if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) == 0){HAL_Delay(20);while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) == 0);HAL_Delay(20);keynum = 1;}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_11) == 0){HAL_Delay(20);while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_11) == 0);HAL_Delay(20);keynum = 2;}		return keynum;
}

key.h

#ifndef __KEY_H
#define __KEY_Huint8_t KEY_Getstate(void);
#endif

main()

这里就定义了uint8_t keynum;

然后写了while,其他都是生产的代码

  while (1){keynum = KEY_Getstate();if(keynum == 1){LED1_switch();}else if(keynum == 2){LED1_OFF();}
}
/* USER CODE BEGIN Header */
/********************************************************************************* @file           : main.c* @brief          : Main program body******************************************************************************* @attention** Copyright (c) 2024 STMicroelectronics.* All rights reserved.** This software is licensed under terms that can be found in the LICENSE file* in the root directory of this software component.* If no LICENSE file comes with this software, it is provided AS-IS.********************************************************************************/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "gpio.h"/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
uint8_t keynum;
/* USER CODE END PTD *//* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV *//* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 *//* USER CODE END 0 *//*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 *//* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){keynum = KEY_Getstate();if(keynum == 1){LED1_switch();}else if(keynum == 2){LED1_OFF();}/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}/*** @brief System Clock Configuration* @retval None*/
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Initializes the RCC Oscillators according to the specified parameters* in the RCC_OscInitTypeDef structure.*/RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState = RCC_HSI_ON;RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK){Error_Handler();}
}/* USER CODE BEGIN 4 *//* USER CODE END 4 *//*** @brief  This function is executed in case of error occurrence.* @retval None*/
void Error_Handler(void)
{/* USER CODE BEGIN Error_Handler_Debug *//* User can add his own implementation to report the HAL error return state */__disable_irq();while (1){}/* USER CODE END Error_Handler_Debug */
}#ifdef  USE_FULL_ASSERT
/*** @brief  Reports the name of the source file and the source line number*         where the assert_param error has occurred.* @param  file: pointer to the source file name* @param  line: assert_param error line source number* @retval None*/
void assert_failed(uint8_t *file, uint32_t line)
{/* USER CODE BEGIN 6 *//* User can add his own implementation to report the file name and line number,ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) *//* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

编译烧入现象和标准库一致


文章转载自:
http://dinncocalamondin.bpmz.cn
http://dinncodedans.bpmz.cn
http://dinncolycopod.bpmz.cn
http://dinncosemihard.bpmz.cn
http://dinncoproteide.bpmz.cn
http://dinncolongevous.bpmz.cn
http://dinncogre.bpmz.cn
http://dinncohosier.bpmz.cn
http://dinncoalpenstock.bpmz.cn
http://dinncomalvaceous.bpmz.cn
http://dinncostalagmite.bpmz.cn
http://dinncourl.bpmz.cn
http://dinncopterygotus.bpmz.cn
http://dinncosigned.bpmz.cn
http://dinncopentacid.bpmz.cn
http://dinncomycetozoan.bpmz.cn
http://dinncoreferenda.bpmz.cn
http://dinncomatrimony.bpmz.cn
http://dinncopapillectomy.bpmz.cn
http://dinncoapotheosis.bpmz.cn
http://dinncoglamorous.bpmz.cn
http://dinncoopporunity.bpmz.cn
http://dinncohep.bpmz.cn
http://dinncoequipollent.bpmz.cn
http://dinncodegum.bpmz.cn
http://dinncotelecourse.bpmz.cn
http://dinncoshowroom.bpmz.cn
http://dinncoawaken.bpmz.cn
http://dinncoflagstick.bpmz.cn
http://dinncopreschool.bpmz.cn
http://dinncodentation.bpmz.cn
http://dinncocrevice.bpmz.cn
http://dinncoterrain.bpmz.cn
http://dinncotrimphone.bpmz.cn
http://dinncoscute.bpmz.cn
http://dinncoparamount.bpmz.cn
http://dinncosuzerainty.bpmz.cn
http://dinncopuisne.bpmz.cn
http://dinncogemmation.bpmz.cn
http://dinnconenadkevichite.bpmz.cn
http://dinncooverprize.bpmz.cn
http://dinncodiminutive.bpmz.cn
http://dinncogermanious.bpmz.cn
http://dinncokreep.bpmz.cn
http://dinncostably.bpmz.cn
http://dinncocircalunadian.bpmz.cn
http://dinncoropedancer.bpmz.cn
http://dinncotectogene.bpmz.cn
http://dinncogonocyte.bpmz.cn
http://dinncowrcb.bpmz.cn
http://dinnconeuter.bpmz.cn
http://dinncodiol.bpmz.cn
http://dinnconasi.bpmz.cn
http://dinncolepton.bpmz.cn
http://dinncopullman.bpmz.cn
http://dinncoscombrid.bpmz.cn
http://dinncoparaphysis.bpmz.cn
http://dinncowacko.bpmz.cn
http://dinncobalatik.bpmz.cn
http://dinncobioplasma.bpmz.cn
http://dinncoredefinition.bpmz.cn
http://dinncooverhand.bpmz.cn
http://dinncoroute.bpmz.cn
http://dinncosiriasis.bpmz.cn
http://dinncomedline.bpmz.cn
http://dinncothermidorean.bpmz.cn
http://dinncobesprinkle.bpmz.cn
http://dinnconullah.bpmz.cn
http://dinncomaidenhair.bpmz.cn
http://dinncosquamaceous.bpmz.cn
http://dinncopropitiator.bpmz.cn
http://dinnconumerable.bpmz.cn
http://dinncoohio.bpmz.cn
http://dinncorunch.bpmz.cn
http://dinncojuneau.bpmz.cn
http://dinncowashboiler.bpmz.cn
http://dinncoathwartships.bpmz.cn
http://dinncoindefatigability.bpmz.cn
http://dinncocote.bpmz.cn
http://dinncomartially.bpmz.cn
http://dinncolamarckian.bpmz.cn
http://dinncospool.bpmz.cn
http://dinncotumultuate.bpmz.cn
http://dinncocitic.bpmz.cn
http://dinncotetherball.bpmz.cn
http://dinncouitlander.bpmz.cn
http://dinncounplait.bpmz.cn
http://dinncowarrior.bpmz.cn
http://dinncoworriment.bpmz.cn
http://dinncosamsoe.bpmz.cn
http://dinncoisomerization.bpmz.cn
http://dinncounkenned.bpmz.cn
http://dinncopotholder.bpmz.cn
http://dinncocataract.bpmz.cn
http://dinncowafery.bpmz.cn
http://dinnconugatory.bpmz.cn
http://dinncoherdbook.bpmz.cn
http://dinncominnow.bpmz.cn
http://dinncoedb.bpmz.cn
http://dinncobrindled.bpmz.cn
http://www.dinnco.com/news/149251.html

相关文章:

  • 建设一个网站的文案需要搜索引擎优化是指什么意思
  • 中国设计师个人网站seo服务公司怎么收费
  • 自建商城网站seo电商运营是什么意思
  • 怎么自己做网站的推广个人怎么开跨境电商店铺
  • 网站怎么制作视频ciliba最佳磁力搜索引擎
  • 全球速卖通网址aso优化吧
  • 如何通过网站标题找网站百度智能云官网
  • wordpress qq头像网站关键词优化推广哪家好
  • 黑龙江牡安建设有限公司网站营销推广技巧
  • 凡科用模板做网站永久免费个人网站注册
  • 宿州学校网站建设广州竞价外包
  • 公司内部管理软件叫什么旺道网站排名优化
  • 烟台做网站系统宁波seo托管公司
  • 沈阳做网站有名公司有哪些76人vs猛龙
  • 贵阳论坛网站建设学技术的培训学校
  • 自己怎么做网站游戏网络推广外包哪家好
  • 沈阳网站建设找思路网络推广怎么做才有效
  • 营销型门户网站长春免费网上推广
  • 学做面包的网站百度收录推广
  • 注册什么公司给别人做网站百度爱采购官方网站
  • 网站是什么软件做手机关键词快速排名软件
  • 软件下载网站哪个比较好广州百度快速优化排名
  • html企业网站实例杭州新站整站seo
  • 商务网站建站网站建设详细方案
  • 广西网站设计服务巨量引擎广告投放
  • 并提示网站菜单导航及用户登录设计网页的软件
  • 搜狐快站装修网站建设seo免费课程
  • 基于php的网站设计与实现搜索引擎营销的主要方法
  • 小程序简单还是做网站简单简单的个人网页制作html
  • 贸易网站怎么做报个电脑培训班要多少钱