Keil笔记(缘更)
Keil
- 一、使用Keil时可能会出现的问题
- 1.Project框不见了
- 2.添加文件时找不到
- 3.交换文件位置
- 4.main.c测试报1 warning
- 5.搜索Ctrl+F
- 二、模电常识(白话随便版)
- 一、名词解释
- 二、基础门电路
- 三、STLINK点灯操作
- 1.配置寄存器进行点灯
- 2.使用库函数进行点灯
- 四.GPIO
- 1.LED闪烁
- 4.按键控制LED
- 注:
一、使用Keil时可能会出现的问题
1.Project框不见了
view->Project Window

2.添加文件时找不到
原因:文件类型忘记选择All files

3.交换文件位置
当经常使用的文件,排在后面,不方便使用,可以用这个调整文件位置。(点击魔术棒旁边哪个三色图形)

4.main.c测试报1 warning
原因:last line of file ends without a newline。
没有如图的第10行,记得空一行。(文件最后多一个回车就行)
如果改完后没效果,需要重新打开一下main.c。

下次打开文件,还是报错,将代码对齐一下后就好了。(上图main函数整体往后了一格)

5.搜索Ctrl+F
鼠标点击要搜索的函数—》Ctrl+F

二、模电常识(白话随便版)
一、名词解释
(1)VCC: 正
(2)GND: 负/接地
(3)GPIO: 引脚
(4)Set: 高电平
(5)ReSet: 低电平
(6)
无符号字符型:Unsigned char 。HAL库符号:Uint8_t。范围:255
无符号整型:Unsigned int。HAL:Uint16_t。范围:65535
无符号长整形:Unsigned long 。HAL:Uint32_t。范围:2^32-1
(7)
// mos管(电压)
三极管(电流):
pnp:低电压导通,emitter箭头指向Base.
npn:高电压导通,Base—>Emitter
(8)比较器(运放): 通过比较输入信号的电压大小来产生输出信号。
(9)双稳态触发器: 是一种具有记忆功能的逻辑单元电路。它能储存一位二进制码。它有两个稳定的工作状态,在外加信号触发下电路可从一种稳定的工作状态转换到另一种稳定的工作状态。
(10)ne555: 通用时基电路。通过改变外部电容器和电阻的数值来控制周期(T=0.693(Ra+2Rb)C)和占空比( D=(Ra+Rb)/(Ra+2xRb) ),实现各种脉冲波形的产生。
频率F=1/T。
(11)PCB: 印刷电路板
二、基础门电路
1.原理图:

软件:嘉立创EDA
(2)连线尽量不走直角

三、STLINK点灯操作
1.配置寄存器进行点灯
#include "stm32f10x.h" // Device header
int main(void)
{//配置寄存器进行点灯(需要查手册,)RCC->APB2ENR=0x00000010;//打开GPIOC时钟GPIOC->CRH=0x00300000;//PC13口的模式GPIOC->ODR=0x00002000;//输出数据:全零(亮),2(灭)while(1){}
}
2.使用库函数进行点灯
#include "stm32f10x.h" // Device header
int main(void)
{//使用库函数进行点灯//1.配置外设时钟//可以右键-》GO To Definition...查看定义RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);//2.配置端口模式//结构体GPIO_InitTypeDef CPIO_InitStructure;CPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//模式CPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;//端口CPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度GPIO_Init(GPIOC,&CPIO_InitStructure);//3.设置端口高低电平(二选一进行测试)GPIO_SetBits(GPIOC,GPIO_Pin_13);//高电平(灭)GPIO_ResetBits(GPIOC,GPIO_Pin_13);//低电平(亮)while(1){}
}
四.GPIO
(1)General PurPose Input Output:通用输入输出口。
(2)引脚电平:0V~3.3V。
1.LED闪烁

相关的用法:
//将指定端口设置为高电平void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//将指定端口设置为低电平void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//根据第三个参数的值设置指定端口void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);//可以同时对16个端口进行写入操作void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
代码:
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{//RCC中APB2外设时钟控制函数(右键可看参数)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//引脚GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度GPIO_Init(GPIOA,&GPIO_InitStructure);//GPIO_SetBits(GPIOA,GPIO_Pin_0);//GPIO_ResetBits(GPIOA,GPIO_Pin_0);//GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);//LED亮//GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);//LED灭while(1){//方法2GPIO_ResetBits(GPIOA,GPIO_Pin_0);Delay_ms(500);GPIO_SetBits(GPIOA,GPIO_Pin_0);Delay_ms(500);//方法1.2GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)0);Delay_ms(500);GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)1);Delay_ms(500);//方法1GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);Delay_ms(500);//毫秒延时函数:Delay文件中GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);Delay_ms(500);}
}
补充:
(1)复用推挽输出:由片上外设控制,高电平接VDD,低电平接VSS。
(2)复用开漏输出:由片上外设控制,高电平为高组态,低电平接VSS。
4.按键控制LED
(1)用法:
读取按键值:
//用来读取输入数据寄存器某一个端口的输入值(返回值代表这个端口的高低电平)uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//用来读取整个输入寄存器(唯一参数用来指定外设)uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);//用来读取输出数据寄存器某一个位uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//用来读取整个输出寄存器uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
注:
内容来自b站STM32入门教程-江协科技,黑马程序员,百度。
b站有视频,还有江协科技博主分享的全套资料,感兴趣可以去b站学习。
相关文章:
Keil笔记(缘更)
Keil 一、使用Keil时可能会出现的问题1.Project框不见了2.添加文件时找不到3.交换文件位置4.main.c测试报1 warning5.搜索CtrlF 二、模电常识(白话随便版)一、名词解释二、基础门电路 三、STLINK点灯操作1.配置寄存器进行点灯2.使用库函数进行点灯 四.GPIO1.LED闪烁4.按键控制L…...
举4例说明Python如何使用正则表达式分割字符串
在Python中,你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法,但它允许你使用正则表达式作为分隔符。 示例 1: 使用单个字符作为分隔符 假设你有一个由逗号分隔的字符串,你可…...
Java 中的 Math. round(-1. 5) 等于多少?
在 Java 中,Math.round() 方法用于四舍五入一个浮点数。这个方法的工作原理是,它会查看要舍入数值的小数点后第一位。如果这一位是 5 或更大,那么整数部分加 1;如果小于 5,整数部分保持不变。 对于 Math.round(-1.5)&…...
MFC界面美化第三篇----自绘按钮(重绘按钮)
1.前言 最近发现读者对我的mfc美化的专栏比较感兴趣,因此在这里进行续写,这里我会计划写几个连续的篇章,包括对MFC按钮的美化,菜单栏的美化,标题栏的美化,list列表的美化,直到最后形成一个完整…...
设计模式|工厂模式
文章目录 1. 工厂模式的三种实现2. 简单工厂模式和工厂方法模式示例3. 抽象工厂模式示例4. 工厂模式与多态的关系5. 工程模式与策略模式的关系6. 面试中可能遇到的问题6.1 **工厂模式的概念是什么?**6.2 **工厂模式解决了什么问题?**6.3 **工厂模式的优点…...
CHAT~(持续更新)
CHAT(持续更新) 实现一个ChatGPT创建API设计页面布局业务操作技术架构 实现安装工具 其他 实现一个ChatGPT 创建API 最简单也最需要信息的一步 继续往下做的前提 此处省略,想要获取接口创建方式联系 设计 页面布局 按照官网布局 业务操作…...
linux系统------------Mysql数据库介绍、编译安装
目录 一、数据库基本概念 1.1数据(Data) 1.2表 1.3数据库 1.4数据库管理系统(DBMS) 数据库管理系统DBMS原理 1.5数据库系统(DBS) 二、数据库发展史 1、第一代数据库 2、第二代数据库 3、第三代数据库 三、关系型数据库 3.1关系型数据库应用 3.2主流的…...
文件操作3
随机读写数据文件 一、随机读写原理 在我们写数据时,有一个光标不断的在随着新写入的数据往后移动; 而读数据时,也有一个看不见光标,随着已经读完的数据,往后移动 这里的文件读写位置标记——可以想象成图形界面里的…...
算法D57 | 动态规划17 | 647. 回文子串 516.最长回文子序列 动态规划总结篇
647. 回文子串 动态规划解决的经典题目,如果没接触过的话,别硬想 直接看题解。 代码随想录 Python: class Solution:def countSubstrings(self, s: str) -> int:n len(s)dp [[0]*n for _ in range(n)]dp[0] [1]*nresult nfor i in range(1, n)…...
go的限流
背景 服务请求下游,oom,排查下来发现是一个下游组件qps陡增导致 但是司内网络框架比较挫,竟然不负责框架内存问题(有内存管理模块,但逻辑又是无限制使用内存) 每个请求一个r、w buffer,请求无限…...
补充--广义表学习
第一章 逻辑结构 (1)A(),A是一个空表,长度为0,深度为1。 (2)B(d,e),B的元素全是原子,d和e,长度为2,深度为1。 (3)C(b,(c,…...
【笔记】KaiOS SPN显示逻辑
更新流程code 1、gonk/dom/system/gonk/radio/RadioInterfaceLayer.jsm handleNetworkStateChanged -> requestNetworkInfo() -> handleRilResponse的getOperator -> handleOperator handleNetworkStateChanged:网络状态变化请求网络信息 this.requestNetworkInfo…...
Visual Basic6.0零基础教学(4)—编码基础,数据类型与变量
编码基础,数据类型与变量 文章目录 编码基础,数据类型与变量前言一、VB中的编程基础二、VB的基本字符集和词汇集1、字符集2、词汇集 VB中的数据类型VB中的变量与常量一.变量和常量的命名规则二.变量声明1.用Dim语句显式声明变量三. 常量 运算符和表达式一. 运算符 1. 算术运算符…...
VPCFormer:一个基于transformer的多视角指静脉识别模型和一个新基准
文章目录 VPCFormer:一个基于transformer的多视角指静脉识别模型和一个新基准总结摘要介绍相关工作单视角指静脉识别多视角指静脉识别Transformer 数据库基本信息 方法总体结构静脉掩膜生成VPC编码器视角内相关性的提取视角间相关关系提取输出融合IFFN近邻感知模块(NPM) patch嵌…...
Android 图形渲染和显示系统关系
SurfaceFlinger:作为 Android 系统中的一个系统服务,SurfaceFlinger 负责管理整个屏幕的渲染和合成工作。它管理和合成多个 Surface,并与硬件加速器以及 Hardware Composer (HWC) 进行交互,最终将图像数据发送给显示硬件进行显示。…...
3.C++:类与对象(下)
一、再谈构造函数 1.1构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;}private:int _year;int _month;i…...
iOS开发之SwiftUI
iOS开发之SwiftUI 在iOS开发中SwiftUI与Objective-C和Swift不同,它采用了声明式语法,相对而言SwiftUI声明式语法简化了界面开发过程,减少了代码量。 由于SwiftUI是Apple推出的界面开发框架,从iOS13开始引入,Apple使用…...
2024-简单点-pandas
pandas pandas to numpy 尽量不用.values提取数据 numexpr 和 bottleneck加速 布尔操作 describe 自定义describe .pipe df.apply 行或者列级别函数级别应用...
面试笔记——Redis(双写一致、持久化)
双写一致 双写一致性: 当修改了数据库中的数据,也要更新缓存的数据,使缓存和数据库中的数据保持一致。 相关问题:使用Redis作为缓存,mysql的数据如何与Redis进行同步?——双写一致性问题 回答时࿰…...
【漏洞复现】科立讯通信指挥调度平台editemedia.php sql注入漏洞
漏洞描述 在20240318之前的福建科立讯通信指挥调度平台中发现了一个漏洞。该漏洞被归类为关键级别,影响文件/api/client/editemedia.php的未知部分。通过操纵参数number/enterprise_uuid可导致SQL注入。攻击可能会远程发起。 免责声明 技术文章仅供参考,任何个人和组织使…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
