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

相关推荐
qq_3975623110 分钟前
MPU6050 , 设置内部低通滤波器,对于输出数据的影响。(简单实验)
单片机
liyinuo201713 分钟前
嵌入式(单片机方向)面试题总结
嵌入式硬件·设计模式·面试·设计规范
艺术家天选40 分钟前
STM32点亮LED灯
stm32·单片机·嵌入式硬件
向阳逐梦41 分钟前
基于STM32F4单片机实现ROS机器人主板
stm32·单片机·机器人
西洼工作室1 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
初学者7.1 小时前
Webpack学习笔记(2)
笔记·学习·webpack
委员1 小时前
基于NodeMCU的物联网空调控制系统设计
单片机·mcu·物联网·智能家居
小猪写代码2 小时前
STM32 水质水位检测项目 (调试模块)和(延时模块)
stm32·单片机·嵌入式硬件
阿昊真人2 小时前
电源转换模块 arduino
单片机
御风_212 小时前
STM32单片机使用CAN协议进行通信
stm32·单片机·嵌入式硬件