STM32学习笔记整理(持续整理更新)

 〇、ARM体系结构与STM32

 

 一、GPIO原理:

参考:

STM32GPIO有几种输入模式及其说明

https://jingyan.baidu.com/article/3065b3b698a6aabecff8a4cd.html

STM32GPIO有几种输出模式及其说明

https://jingyan.baidu.com/article/5d6edee2f873f899eadeecff.html

在STM32中选用IO模式

(1)浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1

(2)带上拉输入_IPU——IO内部上拉电阻输入

(3)带下拉输入_IPD—— IO内部下拉电阻输入

(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电

(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由外接上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能

(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的

(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)

(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

二、STM32时钟树

 

三、STM32中断系统

stm32f103学习笔记——NVIC初始化

原文:https://blog.csdn.net/Lang_Billow/article/details/45133465

void Nvic_Init(void)//中断优先级初始化

{

NVIC_InitTypeDef NVIC_InitStructure;

 

/* NVIC_PriorityGroup */

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//指定抢占优先级为两位,响应优先级为2位,(抢占优先级->响应优先级->中断向量表顺序)

NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;//指定TIMER3中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//指定抢占优先级为2

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//指定响应优先级为0

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能中断请求

NVIC_Init(&NVIC_InitStructure);//根据赋的结构体对NVIC初始化

 

NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;            //指定TIMER4中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //指定抢占优先级为0,0为最高优先级

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;         //指定响应优先级为0

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            //使能中断请求

NVIC_Init(&NVIC_InitStructure);                            //根据赋的结构体对NVIC初始化

 

/* Enable the USARTy Interrupt */

NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;//指定串口3中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//指定抢占优先级为1

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//指定响应优先级为0

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能中断请求

NVIC_Init(&NVIC_InitStructure);//根据赋的结构体对NVIC初始化

}

外部中断EXTI

https://blog.csdn.net/ABAP_Brave/article/details/52514867

 

单片机中USART的那些事儿

https://blog.csdn.net/qq_21990661/article/details/79803211

STM32F103C8T6之通用异步收发器(发送接收中断)

https://blog.csdn.net/lzp15274578636/article/details/76165474

 

附录:

1.4x4 矩阵键盘扫描原理:

 

首先,给P1赋值0xf0,这时P1^4,P1^5,P1^6,P1^7为高电平,P1^0,P1^1,P1^2,P1^3为低电平。如果这时候有按键按下那么P1^4,P1^5,P1^6,P1^7就有一个会变成低电平。因此P1的值就不等于0xf0,这是就可以判断有按键按下。

然后延时一段时间去抖动,然后给P1赋值0xfe,也就是P1^0为低电平,其他为高电平,这时如果有在P1^0线上的P1^4,P1^5,P1^6,P1^7有按键按下,那么就会出现低电平,从而判断哪个按键按下;如果没有那么就给P1赋值0xfd,也就是P1^1为低电平,其他为高电平.,相同方法判断是否有按键按下;如果没有那么就给P1赋值0xfb·····如此类推,一共四次检测。

 

转载于:https://www.cnblogs.com/kryo/p/11342801.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值