小兴教你做平衡小车-stm32程序开发(按键扫描)

文章目录

  • 1 单片机最小系统板按键原理图介绍
  • 2 库函数程序设计
  • 3 寄存器程序设计
  • 4 效果展示

1 单片机最小系统板按键原理图介绍

从图中看出单片机的PB12引脚接到了按键上。
在这里插入图片描述
根据按键的原理图,可以分析得到,如果不按下按键的时候,引脚输入的是高电平。按下按键的时候,引脚输入的是低电平。
在这里插入图片描述

2 库函数程序设计

main.c文件。

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "usart.h"
#include "key.h"
#include "stdio.h"int main(void)
{RCC->APB2ENR |= (uint32_t)0x00000010;//打开GPIOC时钟GPIOC->CRH   &= (uint32_t)0xFF0FFFFF;//使用前清零GPIOC->CRH   |= (uint32_t)0x00300000;//配置PC13为推挽输出,最大速度50MHzDelay_Init();Usart_Init(115200);Key_Init();printf("hello world!\r\n");while(1){GPIOC->BSRR  =  (uint32_t)0x00002000;//PC13引脚输出高电平Delay_ms(100);                       //延时100msGPIOC->BRR  =   (uint16_t)0x2000;    //PC13引脚输出低电平Delay_ms(100);   		             //延时100msif(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 0){Delay_ms(10);  if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 0)printf("key is pressed!\r\n");}}
}

key.c文件。

#include "stm32f10x.h"
#include "key.h"	void Key_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//开启GPIOB时钟GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;          //PB12GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //频率为50mhzGPIO_Init(GPIOB,&GPIO_InitStructure);               //初始化
}

key.h文件。

#ifndef __KEY_H
#define __KEY_Hvoid Key_Init(void);#endif

3 寄存器程序设计

因为寄存器操作可以直接在main.c文件中写完,这里只提供给大家main.c文件哈。

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "usart.h"
#include "key.h"
#include "stdio.h"int main(void)
{RCC->APB2ENR |= (uint32_t)0x00000010;//打开GPIOC时钟GPIOC->CRH   &= (uint32_t)0xFF0FFFFF;//使用前清零GPIOC->CRH   |= (uint32_t)0x00300000;//配置PC13为推挽输出,最大速度50MHzDelay_Init();Usart_Init(115200);//库函数版本
//	//---------------------------------------------------------//
//	Key_Init();//---------------------------------------------------------////寄存器版本//---------------------------------------------------------//RCC->APB2ENR |= (uint32_t)0x00000008;//打开GPIOB时钟GPIOB->CRH   &= (uint32_t)0xFFF0FFFF;//使用前清零GPIOB->CRH   |= (uint32_t)0x00080000;//配置PB12为上/下拉输入GPIOB->BSRR   = (uint32_t)0x00001000;//配置PB12为上拉//---------------------------------------------------------//printf("hello world!\r\n");while(1){GPIOC->BSRR  =  (uint32_t)0x00002000;//PC13引脚输出高电平Delay_ms(100);                       //延时100msGPIOC->BRR  =   (uint16_t)0x2000;    //PC13引脚输出低电平Delay_ms(100);   		             //延时100ms//库函数版本//---------------------------------------------------------//
//		if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 0)
//		{
//			Delay_ms(10);  
//			if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 0)
//				printf("key is pressed!\r\n");
//		}//---------------------------------------------------------////寄存器版本//---------------------------------------------------------//if((GPIOB->IDR & (uint16_t)0x1000) == 0){Delay_ms(10);if((GPIOB->IDR & (uint16_t)0x1000)== 0)printf("key is pressed!\r\n");}//---------------------------------------------------------//}
}

4 效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/717628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

适配华为“纯血鸿蒙”,抖音开始招聘相关人才

目前,字节跳动上线了“大前端高级开发工程师”一职,开始招聘鸿蒙人才。 根据职位描述,该岗位负责抖音大前端基础工程与架构设计,以及抖音大前端基础设施建设。 该职位需要有前端工程化经验,熟悉JavaScript/TypeScrip…

斐波那契数列模型---使用最小花费爬楼梯

746. 使用最小花费爬楼梯 - 力扣(LeetCode) 1、状态表示: 题目意思即:cost[i]代表从第i层向上爬1阶或者2阶,需要花费多少力气。如cost[0],代表从第0阶爬到第1阶或者第2阶需要cost[0]的力气。 一共有cost.…

C++_数据类型_字符串型

作用 用于表示一串字符 两种风格 C风格字符串&#xff1a;char 变量名[] "字符串值” 示例 注意 C风格的字符串要用双括号括起来 C风格字符串&#xff1a;string 变量名 "字符串值” 注意 用C风格字符串的时候&#xff0c;要包含这个头文件#include <st…

【比较mybatis、lazy、sqltoy、lambda、操作数据 】操作批量新增、分页查询【一】

orm框架使用Lambda性能比较 环境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本mybatis☑️☑️3.5.4sqltoy☑️☑️5.2.98lazy✖️☑️1.2.3-JDK17 数据库表(含有唯一性索引s_u) CREATE TABLE sys_u…

吴恩达机器学习-可选实验室-梯度下降-Gradient Descent for Linear Regression

文章目录 目标工具问题陈述计算损失梯度下降总结执行梯度下降梯度下降法成本与梯度下降的迭代预测绘制祝贺 目标 在本实验中&#xff0c;你将:使用梯度下降自动化优化w和b的过程 工具 在本实验中&#xff0c;我们将使用: NumPy&#xff0c;一个流行的科学计算库Matplotlib&…

【茶话数据结构】查找最短路径——Dijkstra算法详解(保姆式详细图解,步步紧逼,保你学会)

&#x1f4af; 博客内容&#xff1a;【茶话数据结构】查找最短路径——Dijkstra算法详解 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f989;所属专栏&#xff1a;数据结构笔记 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;专注基础和实…

【python】遵守 robots.txt 规则的数据爬虫程序

程序1 编写一个遵守 robots.txt 规则的数据爬虫程序涉及到多个步骤&#xff0c;包括请求网页、解析 robots.txt 文件、扫描网页内容、存储数据以及处理异常。由于编程语言众多&#xff0c;且每种语言编写爬虫程序的方式可能有所不同&#xff0c;以下将使用 Python 语言举例&am…

【论文】A Survey of Monte Carlo Tree Search Methods阅读笔记

本文主要是将有关蒙特卡洛树搜索的文献&#xff08;2011年之前&#xff09;进行归纳&#xff0c;概述了核心算法的推导&#xff0c;给出了已经提出的许多变化和改进的一些结构&#xff0c;并总结了MCTS方法已经应用于的博弈和其他领域的结果。 蒙特卡洛树搜索是一种通过在决策…

Redis在中国火爆,为何MongoDB更受欢迎国外?

一、概念 Redis Redis&#xff08;Remote Dictionary Server&#xff09;是一个使用ANSI C编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库。Redis是由Salvatore Sanfilippo于2009年启动开发的&#xff0c;首个版本于同年5月发布。 MongoDB MongoDB…

基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析

在自然和社会科学领域有大量与地理或空间有关的数据&#xff0c;这一类数据一般具有严重的空间异质性&#xff0c;而通常的统计学方法并不能处理空间异质性&#xff0c;因而对此类型的数据无能为力。以地理加权回归为基础的一系列方法&#xff1a;经典地理加权回归&#xff0c;…

138.乐理基础-等音、等音程的意义

上一个内容&#xff1a;137.乐理基础-协和音程、不协和音程 上一个内容里练习的答案&#xff1a; 等音、等音程的意义&#xff0c;首先在 19.音阶 里写了&#xff0c;一个调使用的音阶应当是从主音快开始&#xff0c;以阶梯状的形式进行到主音结束&#xff0c;这样才能明显从乐…

b站小土堆pytorch学习记录—— P16 神经网络的基本骨架 nn.Module的使用

文章目录 一、前置知识1.nn是什么2.nn如何使用 二、代码 一、前置知识 1.nn是什么 在深度学习中&#xff0c;“nn” 通常是指神经网络&#xff08;Neural Network&#xff09;的缩写。神经网络是一种由大量神经元&#xff08;neurons&#xff09;相互连接而成的模型&#xff…

【Python】成功解决TypeError: list indices must be integers or slices, not float

【Python】成功解决TypeError: list indices must be integers or slices, not float &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&…

两天学会微服务网关Gateway-Gateway工作原理

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…

【网站项目】144校园二手物品交易平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

FRM模型十四:FRA估值

什么是FRA FRA&#xff08;Forward rate agrreement&#xff09;远期利率协议&#xff0c;是一种场外衍生品。FRA在0时刻确定&#xff0c;在未来时刻进行交易的协议。例如FRA3,6表示双方约定在3个月后以Rk的利率水平借款3个月。 应用场景&#xff1a;某公司未来3个月有融资需…

[HackMyVM] 靶场 Wave

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…

Java JDBC JDBC事务管理 JDBC连接池(阿里巴巴Druid连接池、C3P0连接池) JDBC工具类

Java数据库连接 Java DataBase Connectivity。JDBC 规范定义接口&#xff0c;具体的实现由各大数据库厂商来实现。 JDBC可让Java通过程序操作关系型数据库&#xff0c;JDBC基于驱动程序实现与数据库的连接与操作。 JDBC 是 Java 访问数据库的标准规范&#xff0c;真正怎么操作…

C++ 滑动窗口

例1 209. 长度最小的子数组 ①窗口大小不固定 ②求最小长度 -> ret INT_MAX ③数组内的值都大于0&#xff0c; 符合单调性&#xff08;sum nums[right] -> sum增大&#xff09; while里面符合条件&#xff0c;在里面更改ret 参考代码 class Solution { public:i…