链接:https://pan.baidu.com/s/1sETAAAAhbylHvRaCnWjKlA
提取码:jcv3
链接:https://pan.baidu.com/s/1mF1fyTkaqQp0FoGbEYrL3Q
提取码:pgar
芯片的规格介绍
RAM(Read Access Memory):随机存储器,通俗的理解就是内存。(SRAM)
ROM(Read Only Memory): 可读存储器,可以看作是存储器,并且有着掉电不丢失的特性。在stm32中通常称为FLASH(闪存)。
封装方式:LQFP48(低抛面四方扁平封装)。常见的封装方式(DIP)双列直插式封装和小外形集成电路封装(SOIC)。
系统结构
片上外设的介绍和基本使用
GPIO通用输入输出口
具体了解可参考 http://t.csdnimg.cn/KXqoZ
引脚电平:0V~3.3V,部分引脚可容忍5V
输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等
可配置为8种输入输出模式
上拉输入:上拉输入默认值为高电平,高电平弱驱动。
下拉输入:默认为低电平,低电平强驱动。
浮空输入:输入信号由外部电路决定,适用于需要检测外部信号变化。
模拟输入:输入的信号是连续的且是模拟信号。
推挽输出:输出强上拉和强下拉电平。
开漏输出:输出强下拉,当输出高电平时,二极管断开,并不是输出的电平,而是由外部上拉电阻拉至高电平,这种一般是弱上拉。
复用模式:就是将引脚的控制权交于片上外设控制
推挽复用 开漏复用
//开启时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//配置引脚模式
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//配置为输入模式
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//配置具体引脚,这里配置的是二号引脚
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//引脚输入速率
GPIO_Init(GPIOA,&GPIO_InitStructure);
AFIO复用端口
为了节省引脚资源,同一个引脚可能有不同的功能可以选用(引脚重映射),AFIO可以帮助管理引脚功能的选择,灵活性高的同时还可以提高性能。
//开启时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
//功能复用
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE);
EXTI外部中断
嵌套向量中断控制器(NVIC)这个是内核外设,不用开启时钟。
中断和异常向量表:这个里面包含了stm32的所有中断事件。(建议参考手册的9.1.2)
32的中断介绍
68个可屏蔽中断通道,包含EXTI、TIM、ADC、USART、SPI、I2C、RTC等多个外设
使用NVIC统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先级和响应优先级
优先级分为五组,分别是0~5,其中优先级又分为抢占式优先级和响应优先级
分组0,代表响应优先级占四位,4位,取值为0~15;分组1,抢占优先级1位,取值为0~1,响应优先级3位,取值为0~7以此类推······
//设置中断优先级的代码
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
配置外部中断的基本操作
//开启时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
//引脚配置
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//GPIO要开启外部中断使能
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource1);
//优先级设置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
//NVIC设置
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn ;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_Init(&NVIC_InitStructure);
//中断配置
EXTI_InitTypeDef structure;
structure.EXTI_Line=EXTI_Line1;
structure.EXTI_LineCmd=ENABLE;
structure.EXTI_Mode=EXTI_Mode_Interrupt;//外部中断,或者事情中断
structure.EXTI_Trigger=EXTI_Trigger_Rising;//上升沿还是下降沿触发
EXTI_Init(&structure);
对于互联型产品,外部中断
/
事件控制器由
20
个产生事件
/
中断请求的边沿检测器组成,对于其它
产品,则有
19
个能产生事件
/
中断请求的边沿检测器。每个输入线可以独立地配置输入类型
(
脉冲
或挂起
)
和对应的触发事件
(
上升沿或下降沿或者双边沿都触发
)
。每个输入线都可以独立地被屏
蔽。挂起寄存器保持着状态线的中断请求。
具体内容不多讲,建议参考一下手册的9.2