Keil笔记(缘更)

Keil

  • 一、使用Keil时可能会出现的问题
    • 1.Project框不见了
    • 2.添加文件时找不到
    • 3.交换文件位置
    • 4.main.c测试报1 warning
    • 5.搜索Ctrl+F
  • 二、STLINK点灯操作
    • 1.配置寄存器进行点灯
    • 2.使用库函数进行点灯
  • 3.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
在这里插入图片描述

二、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){}
}

3.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站学习。

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

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

相关文章

KVM 集成 OpenvSwitch 虚拟交换机

KVM 集成 OpenvSwitch 虚拟交换机 KVM(Kernel-based Virtual Machine)是Linux内核中的一种虚拟化技术,它允许在同一台主机上运行多个虚拟机。 在默认情况下,KVM使用基于Linux bridge的网络虚拟化解决方案。Linux bridge是一种内核模块,可将…

网络编程——预备知识

网络编程——预备知识 🍃套接字🌿什么是套接字🌿套接字的类型🌿套接字的位置 🍃IP🍃端口号Port🍃字节序🍃地址信息结构(结构体类型) 🍃套接字 &a…

【Python】: Django Web开发实战(详细教程)

Python Django全面介绍 Django是一个非常强大的Python Web开发框架,它以"快速开发"和"干净、实用的设计"为设计宗旨。本文将从Django的基本概念开始,逐渐引导大家理解如何使用Django构建复杂的web应用程序。 Django基本概念与原理…

浅谈前端路由原理hash和history

1、认识前端路由 本质 前端路由的本质,是监听 url 地址或 hash 值的改变,来切换渲染对应的页面组件 前端路由分为两种模式 hash 模式 history 模式 两种模式的对比 2、hash 模式 (1)hash 定义 hash 模式是一种把前端路由的路…

【MySQL】数据库的基础概念

👦个人主页:Weraphael ✍🏻作者简介:目前学习计网、mysql和算法 ✈️专栏:MySQL学习 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

【教程】rax3000m emmc刷机 支持硬件QOS MT7981到底值不值

为什么选择rax3000m? 1、恩山论坛237大佬放出了硬件QOS功能,而很多几百元路由器一旦开启QOS就会变软件NAT走CPU转发,效果还不如x86软路由。这样就非常适合刷机,在家里跑pt、迅雷等任务时候不会卡顿,实测,丢…

智慧公厕:卫生、便捷、安全的新时代厕所变革

在城市快速发展的背景下,公共厕所的建设和管理变得越来越重要。智慧公厕作为厕所变革的一项全新举措,通过建立公共厕所全面感知监测系统,以物联网、互联网、大数据、云计算、自动化控制技术为支撑,实现对公共厕所的智能化管理和运…

Fabric.js在vue2中使用

Fabric.js安装 这里我是基于vue来使用的,先安装上Fabric.js npm install fabric 在main.js中 import fabric from fabric Vue.use(fabric);Fabric 提供了 7 种基础形状: fabric.Circle (圆)fabric.Ellipse (椭圆)fabric.Line (线)fabric.Polyline (多条…

camunda 与 pycamunda学习

camunda 与 pycamunda 相关链接: camunda 官方社区:https://docs.camunda.org/manual/7.17/ 官方社区提供的REST_API:https://docs.camunda.org/manual/7.17/reference/rest/ GITHUB 社区:https://github.com/camunda-community-hub Git…

18.WEB渗透测试--抓包技术(上)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:17.WEB渗透测试--Kali Linux(五)-CSDN博客 网站协议抓包 1.BurpSuite Burp Suite 是用…

makefile基础与实战编译C++项目

从源码到执行程序 makefile运行流程 :这个符号用于在执行的命令之前,通常会告诉make不要输出命令本身,只输出命令的结果。但是当它位于命令行的开头时,它通常会让Make静默执行该命令,即不在命令行中显示该命令&#xf…

学习笔记-华为IPD转型2020:3,IPD的实施

3. IPD的实施 1999 年开始的 IPD 转型是计划中的多个转型项目中的第一个(Liu,2015)。华为为此次转型成立了一个专门的团队,从大约20人开始,他们是华为第一产业的高层领导。董事会主席孙雅芳是这个团队的负责人。该团…

MacBook使用——彻底卸载并删除软件:NTFS for Mac

问题 之前因MacBook读写NTFS格式移动硬盘,我安装并使用了 Paragon NTFS for Mac ,试用期结束后将其从【应用程序】中卸载移除了。但之后每次开机启动时,系统还是会弹出【激活】通知,如下图 解决 Step1、在用户目录下的 Library 目…

STM32中MicroLIB的关闭为什么会导致卡死----解析

STM32MicroLIB 大家好我是 MHZ 。最近又开始往回捡单片机的知识了~ 之前大学的时候都没用过 STM 的 CubeMX,这会拿来用着感觉很方便啊~ 果然科技在进步! 在开发使用 Keil 对 STM32 进行开发的时候在会有一个叫做 MicroLIB 的选项。 这个的具体原因我搜…

c++ 指针大小

C的一个指针占内存几个字节? 结论: 取决于是64位编译模式还是32位编译模式(注意,和机器位数没有直接关系) 在64位编译模式下,指针的占用内存大小是8字节在32位编译模式下,指针占用内存大小是4字…

联合和枚举

联合体类型的声明 联合体(Union)是一种特殊的数据类型,它允许在同一内存位置存储不同类型的数据。与结构体不同的是,联合体的所有成员共享同一块内存空间,因此联合体的大小取决于它最大的成员的大小。 所以联合体也叫…

基于python的变配电室运行状态评估与预警系统flask-django-nodejs-php

近年来,随着我国工业化、城镇化步伐的不断加快,城市配电网络取得令人瞩目的发展成果。变配电室是供配电系统的核心,在供配电系统中占有特殊的重要地位[1]。变配电室电气设备运行状态和环境信息缺乏必要的监测评估预警手段,如有一日遭遇突发情…

蓝桥杯之动态规划冲刺

文章目录 动态规划01背包小练一下01背包网格图上的DP完全背包 最长公共字符串最长递增子序列 动态规划 动态规划:确定好状态方程,我们常常是确定前 当状态来到 i 时,前 i 个物体的状态是怎么样的,我们并不是从一个点去考虑&#x…

Python爬虫获取接口数据

Python爬虫获取接口数据 正常人的操作​​​​​​​​​​爬虫的思路标题获取请求信息标题请求转换为代码完整代码请求返回信息执行程序获取静态网页数据的教程,适用于我们要爬取的数据在网页源代码中出现,但是还是有很多的数据是源代码中没有的,需要通过接口访问服务器来获…

【计算机组成】27、有符号数和无符号数

文章目录 int 是有符号数 uint 是无符号数 所以 int8 的 范围是 -128 到 127 uint8 的范围是 0 到 255 同样的二进制 1000-0000 如果用 uint8 解释则为 255,但如果用 int8 解释则为 -128 同样的二进制 0111-1111 如果用 uint8 解释则为 127,但如果用…