Keil笔记(缘更)

Keil

一、使用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.配置寄存器进行点灯

cpp 复制代码
#include "stm32f10x.h"                  // Device header
int main(void)
{
	//配置寄存器进行点灯(需要查手册,)
	RCC->APB2ENR=0x00000010;//打开GPIOC时钟
	GPIOC->CRH=0x00300000;//PC13口的模式
	GPIOC->ODR=0x00002000;//输出数据:全零(亮),2(灭)
	while(1)
	{
	}
}

2.使用库函数进行点灯

cpp 复制代码
#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闪烁


相关的用法:

cpp 复制代码
	//将指定端口设置为高电平
	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);

代码:

cpp 复制代码
#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)
	{
		//方法2
		GPIO_ResetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);
		GPIO_SetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);
		
		//方法1.2
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)0);
		Delay_ms(500);
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)1);
		Delay_ms(500);
		
		//方法1
		GPIO_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)用法:

读取按键值:

cpp 复制代码
    //用来读取输入数据寄存器某一个端口的输入值(返回值代表这个端口的高低电平)
	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站学习。

相关推荐
Pandaconda24 分钟前
【Golang 面试题】每日 3 题(三十九)
开发语言·经验分享·笔记·后端·面试·golang·go
l1x1n036 分钟前
No.35 笔记 | Python学习之旅:基础语法与实践作业总结
笔记·python·学习
gyeolhada1 小时前
计算机组成原理(计算机系统3)--实验八:处理器结构拓展实验
java·前端·数据库·嵌入式硬件
dal118网工任子仪6 小时前
66,【6】buuctf web [HarekazeCTF2019]Avatar Uploader 1
笔记·学习
羊小猪~~7 小时前
MYSQL学习笔记(四):多表关系、多表查询(交叉连接、内连接、外连接、自连接)、七种JSONS、集合
数据库·笔记·后端·sql·学习·mysql·考研
milk_yan8 小时前
Docker集成onlyoffice实现预览功能
前端·笔记·docker
东京老树根8 小时前
Excel 技巧15 - 在Excel中抠图头像,换背景色(★★)
笔记·学习·excel
andylauren9 小时前
(5)STM32 USB设备开发-USB键盘
stm32·嵌入式硬件·计算机外设
Ronin-Lotus10 小时前
嵌入式硬件篇---ADC模拟-数字转换
笔记·stm32·单片机·嵌入式硬件·学习·低代码·模块测试
promising-w10 小时前
单片机基础模块学习——数码管
单片机·嵌入式硬件·学习