STM32 点灯实现 7.18

news2024/10/7 4:25:04

嵌入式:

以应用为中心,以专用计算机为基础,软硬件可裁剪

ARM

A系列芯片:高端芯片,实现人机互动
R系列:实现时效性
M系列:低端芯片,控制硬件设备,灯,风扇....

ROM\RAM

ROM(硬盘)
含有(flash、eeprom)
程序运行时,只读存储器
RAM(内存)
随机存储器

特殊功能寄存器:SFR(special functional register)

时钟

脉冲波(非常稳定,倍频,分频)
时钟源:产生时钟信号的东西
时钟是单片机的心脏
 1.寄存器:存高低存二进制数据--触发器--需要时钟信号才能工作
 2.定时器、计数器,需要时钟信号才能计数

STM32

全称:stm32F103C8T6

st:意法半导体

m:m系列

32:32位微控制器

F:芯片的子系列

103:增强功能系列

C:管脚48个

8:64byte flash容量

T:硬件封装系列

6:芯片的温度 35~80摄氏度

位运算:

<< >> & | ! ~ ^

清0和置1

点灯实现

时钟:一定的脉冲信号频率
作用:同意元器件的时效

时钟源:
HSI:内部高速时钟源 
LSI:内部低速时钟源
HSE:外部高速
LSE:外部低速

输入输出方式:(管脚和设备之间)
输出:
复用:是除GPIO以外使用到引脚
复用开漏
复用推挽
推挽输出:可以管脚和设备之间输出高低电平,引脚电平自由决定
开漏输出:输出的高低电平不具备驱动能力

输入:
上拉:引脚悬空时输入高电平,可以被外部拉低
浮空:接受数据的时候用,引脚电平完全由外部决定(当引脚悬空时,电平未知)
下拉:引脚悬空时输入低电平,可以被外部拉高
模拟输入:接收模拟信号

1.开时钟
APB2 外设时钟使能寄存器
基地址:0x4002 1000  偏移地址:0x18 [4] 1 打开GPIOC的时钟

2.输入输出模式
GPIOC 输入输出
基地址:0x4001 1000  偏移地址:0x04 [23:20] 0x1 通用推挽速度10MHZ

3.输出高低电平
端口输出寄存器
基地址:0x4001 1000  偏移地址:0x0c [13] 0

img

根据原理图PC13是低电平触发( ̄︶ ̄)↗ ,左边有个电源,右边是低电平

中断实现

中断的机制是打断而不是同时,单进程的情况
中断:

事件一执行中,事件二产生,打断事件一执行事件二,事件二处理完成,继续执行事件一
则,事件二就为中断

外部中断、串口中断、定时器中断

NVIC(中断优先级)每一次有中断都要对NVIC进行设置


1.NVIC中断优先级分组

	stm32有84个中断,包括 16个内核中断和68个可屏蔽中断,具有16级的可编程的中断优先级
	中断管理:
		寄存器AIRCR
		库函数NVIC_PriorityGroupConfig
NVIC_PriorityGroup 		先占优先级(抢占优先级)	从优先级(响应优先级)		描述

	
NVIC_PriorityGroup_0 		没有 						0-15 					先占优先级 0 位,从优先级 4 位
NVIC_PriorityGroup_1 		0-1 						0-7 					先占优先级 1 位,从优先级 3 位
NVIC_PriorityGroup_2 		0-3 						0-3 					先占优先级 2 位,从优先级 2 位
NVIC_PriorityGroup_3 		0-7 						0-1 					先占优先级 3 位,从优先级 1 位
NVIC_PriorityGroup_4 		0-15 						没有					先占优先级 4 位,从优先级 0 位

		注意:不设置优先级分组时,默认为NVIC_PriorityGroup_0 
		注意: 当 2(n)个相同抢先优先级和相同子优先级的中断同时出现,STM32 响应中断通道
	所对应的中断向量地址低的那个中断。(中断向量表见:stm32中文参考手册p132)
		注意:高抢占才能打断低抢占
		注意(强调):优先级分组(该函数)只能设置一次

EXTI (外部中断)
	16条中断线,每条都能触发中断

实验:通过k2(PA15)触发外部中断实现灯的点亮和熄灭

以下为外部中断的实现步骤:

1.打开复用功能和GPIO时钟

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

2.引脚GPIO初始化

	GPIO_Init()

3.映射GPIO引脚和对应的外部中断线

	GPIO_EXTILineConfig()

4.外部中断初始化

	EXTI_Init()

	typedef struct 
	{ 
		u32 EXTI_Line; 						//中断线
		EXTIMode_TypeDef EXTI_Mode; 		//中断模式
		EXTIrigger_TypeDef EXTI_Trigger; 	//触发方式
		FunctionalState EXTI_LineCmd; 		//使能
	} EXTI_InitTypeDef;

5.配置中断优先级

	NVIC_Init()
	typedef struct 
{ 
u8 NVIC_IRQChannel; //中断通道 
u8 NVIC_IRQChannelPreemptionPriority; //抢占优先级 
u8 NVIC_IRQChannelSubPriority;  //响应优先级
FunctionalState NVIC_IRQChannelCmd; //通道使能
} NVIC_InitTypeDef; 
6.编写中断处理函数

void EXTI15_10_IRQHandler(void)(不同的中断线,中断处理函数是不同的)
#ifndef __LED_H
#define __LED_H

void led_init(void);
void led_on(void);
void led_off(void);

#endif
#include "stm32f10x.h"                  // Device header
#include "led.h"

void delay(int n)
{
	int i;
	while(n--)
		for(i=0; i<8050; i++);
}

int main()
{
	led_init();

	while(1)
	{
		led_on();
		delay(1000);
		led_off();
		delay(1000);
	}

}
#include "led.h"
#include "stm32f10x.h"                  // Device header

void led_init(void)
{
	//1打开时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	

	//2设置输入输出模式
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
	GPIO_Init(GPIOC, &GPIO_InitStructure);

}
void led_on(void)
{
	//低电平点灯
	GPIO_ResetBits(GPIOC, GPIO_Pin_13);
}
void led_off(void)
{
	//高电平关灯
	GPIO_SetBits(GPIOC, GPIO_Pin_13);

}

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

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

相关文章

Springboot初识(一)

一.什么是Spring Boot Spring Boot是一个开源的、用于简化Spring应用程序开发的框架。它是Spring项目的一个子项目&#xff0c;旨在为Spring应用程序提供更快速、更便捷的开发体验。Spring Boot基于Spring框架&#xff0c;同时也整合了其他Spring项目和第三方库&#xff0c;使…

Unity-AssetBundle

一、AB 包介绍 ​ AB 包是特定于平台的资源压缩包&#xff0c;类似于压缩文件。其中资源可包括&#xff1a;模型、贴图、预设体、音效、材质球等等。 ​ 相较于 Resources 文件夹下的资源文件&#xff0c;AB 包能够更好管理资源&#xff1a; Resources 文件夹&#xff1a;打包…

【设计模式】23种设计模式——建造者模式Builder(原理讲解+应用场景介绍+案例介绍+Java代码实现)

介绍 建造者模式又叫生成器模式&#xff0c;是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别)&#xff0c;使这个抽象过程的不同实现方法可以构造出不同属性的对象建造者模式是一步一步创建一个复杂的对象&#xff0c;它允许用户只通过指定复杂对象的类型和…

【PHP面试题79】在Linux中如何设置MySQL和PHP服务开机启动

文章目录 &#x1f680;一、前言&#x1f680;二、设置MySQL服务开机启动&#x1f50e;2.1 打开终端&#x1f50e;2.2 编辑MySQL配置文件&#x1f50e;2.3 修改配置文件&#x1f50e;2.4 检查MySQL服务是否已启动&#x1f50e;2.5 设置MySQL服务开机启动 &#x1f680;三、设置…

C# Modbus通信从入门到精通(12)——Modbus ASCII协议原理

Modbus ASCII是串行链路上的协议,也就是说ModbusASCII是通过串口通信来实现的,它可以通过RS232、RS485物理层的接口来实现,同时它也是一个主从协议,在同一时间总线上只能有一个主站和一个或多个(最多247)个从站。Modbus通信总是由主站发起,从站没有接收到主站的请求时不…

NOAA国家强风暴实验室的天气雷达研究历史(1962年~2016年)

一、1962年-NSSP开始研究WSR-57 美国气象局国家严重风暴项目(NSSP)的一小群研究人员从堪萨斯城搬到俄克拉荷马州诺曼的天气雷达实验室,并开始研究最近安装的研究天气监视雷达-1957(WSR-57)。 二、1964年-NSSL开发的脉冲多普勒雷达技术 1956年,康奈尔航空实验室建造了一…

C++OpenCV(2):图像处理基础概念与操作

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 &#x1f506; OpenCV项目地址及源代码&#xff1a;点击这里 文章目录 图形读取与显示加载图片显示图片打印图片信息保存图片 色彩模型转换RGB颜色模型HSV颜色模型HLS模型LAB模型 图像像素读写操作像素算数运…

python机器学习(二)特征工程、K-近邻算法、KNN工作流程、scikit-learn实现K近邻算法、K值选择、距离计算、KD树

特征工程 把特征转换为机器容易识别的数据&#xff0c;把特征a转化为机器容易读懂、量化的语言 归一化Min-Max 将原始数据映射到[0,1]之间 X ′ x − m i n m a x − m i n X \frac{x-min}{max-min} X′max−minx−min​ 但是归一化是有弊端的&#xff0c;比如有一个值错误…

OJ练习第142题——路径总和 II

113. 路径总和 II 力扣链接&#xff1a;113. 路径总和 II 题目描述 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 Java代码&#xff08;深度优先搜…

基于linux下的高并发服务器开发(第三章)- 3.8 线程同步

sellticket.c /*使用多线程实现买票的案例。有3个窗口&#xff0c;一共是100张票。 */#include <stdio.h> #include <pthread.h> #include <unistd.h>// 全局变量&#xff0c;所有的线程都共享这一份资源。 int tickets 100;void * sellticket(void * arg)…

后处理材质球:黄金螺旋分割线和参考图

后处理材质球&#xff1a;黄金螺旋分割线和参考图 Begin Object Class/Script/UnrealEd.MaterialGraphNode Name"MaterialGraphNode_0"Begin Object Class/Script/Engine.MaterialExpressionLinearInterpolate Name"MaterialExpressionLinearInterpolate_1&qu…

(202307)wonderful-sql:初识数据库(task1)

学习知识 初识数据库 关系型数据库简介 特点是由行和列组成的二维表来管理数据&#xff0c;这种类型的 DBMS 称为关系数据库管理系统&#xff08;Relational Database Management System&#xff0c;RDBMS&#xff09;。本课程将向大家介绍使用 SQL 语言的数据库管理系统&am…

No5:学习过程中基础语法积累

文章目录 基础语法&#xff1a;对象对象构建和数据封装 集合列表截取输出&#xff08;特色是数据可变即可重新赋值&#xff09;元组截取输出&#xff08;元组特色是数据不可变&#xff09;字典&#xff08;根据key取value&#xff09; 字符串函数 基础语法&#xff1a;对象 对…

【动态规划part04】| 背包问题理论基础、416.分割等和子集

目录 &#x1f388;背包问题理论基础 &#x1f45c;01背包 ✨二维dp数组01背包 ✨一维dp数组01背包&#xff08;滚动数组&#xff09; &#x1f388;LeetCode416.分割等和子集 &#x1f388;背包问题理论基础 &#x1f45c;01背包 有n件物品和一个最多能背重量为w 的背…

AUTOSAR从入门到精通-【应用篇】基于 LIN 总线的汽车自动天窗防夹控制系统的设计与实现

目录 前言 天窗控制系统的 LIN 总线 2.1 LIN 总线概述 2.2 LIN 总线协议规范 2.3 防夹控制系统的 LIN 总线 2.4 系统 LIN 网络测试 天窗防夹控制系统整体设计方案 3.1 天窗防夹控制系统功能 3.2 控制系统总体设计 3.2.1 系统结构 3.2.2 天窗防夹控制器 3.2.3 天窗传…

小黑子—JavaWeb:第二章 Maven与MyBatis

JavaWeb入门2.0 1.Maven1.1 Maven 简介1.2 Maven 安装配置1.3 Maven 基本使用1.3.1 Maven常用命令1.3.2 Maven生命周期 1.4 IDEA 配置 Maven1.4.1 配置 Maven 环境1.4.2 Maven 坐标详情1.4.3 IDEA 创建Maven项目1.4.4 IDEA 导入Maven文件1.4.5 配置Maven-Helper 插件 1.5 依赖管…

逻辑斯特回归

*分类是离散的&#xff0c;回归是连续的 下载数据集 trainTrue&#xff1a;下载训练集 逻辑斯蒂函数保证输出值在0-1之间 能够把实数值映射到0-1之间 导函数类似正态分布 其他饱和函数sigmoid functions 循环神经网络经常使用tanh函数 与线性回归区别 塞戈马无参数&#x…

《嵌入式 - 工具》J-link读写MCU内部Flash

1 J-Link简介 J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合IAR EWAR&#xff0c;ADS&#xff0c;KEIL&#xff0c;WINARM&#xff0c;RealView等集成开发环境支持所有ARM7/ARM9/ARM11,Cortex M0/M1/M3/M4, Cortex A5/A8/A9等内核芯片的仿真&#xff0c;是学…

VirtualBox 7.0.10 使用宿主机物理硬盘

方法&#xff1a; 利用virtualbox的管理工具&#xff0c;将宿主机脱机后的物理硬盘&#xff0c;映射为一个vmdk&#xff0c;然后在vitrualbox中注册该vmdk&#xff0c;然后分配给虚拟机使用。 1. 右键单击window桌面左下角&#xff0c;选择 Windows PowerShell (管理员) 2. c…

第一章 函数的概念

文章目录 考点1、定义域2、对应法则 一、函数的概念1、自变量 x , 因变量 y&#xff0c;一一对应&#xff0c;因此有公式 y f (x)2、定义域具体函数的定义域 &#xff08;送分题&#xff09; 真题1、2、3、4、抽象函数的定义域 真题1、2、 3、根据函数的对应法则求函数表达式题…