STM32篇(上):
接着我们的主题围绕着电赛的四天三夜,这次我着重于STM32,本人也是初步学习STM32,如有不对的地方,请多多指教,以下是本人看完江科大后的笔记:
主要部分:
1、STM32简介:
1.STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器
2.STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等
3.STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器
(STM32核心原理图)
2、GPIO外设
GPIO输出:通用输入输出口,可分为8种输入输出模式,挂载在APB2总线上,其中输出分为以下四种输出方式:
开漏输出(GPIO_OUT_OD) | 数字输出 | 可输出引脚电平,高电平为高阻态,低电平接VSS |
推挽输出(GPIO_OUT_PP) | 数字输出 | 可输出引脚电平,高电平接VDD,低电平接VSS |
复用开漏输出(GPIO_AF_OD) | 数字输出 | 由片上外设控制,高电平为高阻态,低电平接VSS |
复用推挽输出(GPIO_AF_PP) | 数字输出 | 由片上外设控制,高电平接VDD,低电平接VSS |
当输出配置中的P-MOS无效时,无法接入VDD为高阻态,此时为开漏输出;
当输出配置中的P-MOS和N-MOS均有效时接入VDD和VSS,默认为推挽输出;
GPIO输入: 同样的GPIO输入可分为4种输入方式;
浮空输入(GPIO_IN_FLOATING) | 数字输入 | 可读取引脚电平,若引脚悬空,则电平不确定 |
上拉输入(GPIO_IPU) | 数字输入 | 可读取引脚电平,内部连接上拉电阻,悬空时默认高电平 |
下拉输入(GPIO_IPD) | 数字输入 | 可读取引脚电平,内部连接下拉电阻,悬空时默认低电平 |
模拟输入(GPIO_AIN ) | 模拟输入 | GPIO无效,引脚直接接入内部ADC |
浮空输入可用于KEY识别或者USART中的RX接收位;
3、 OLED调试工具:
OLED(Organic Light Emitting Diode):有机发光二极管 OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点 0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块 供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64;本人手里的是I2C的OLED屏幕,OLED_Init();OLED_clear();......
4、外部中断——EXTI
中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行
中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源
中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回
可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序在开启EXTI之前,进行AFIO中断引脚的选择,复用功能引脚重映射、中断引脚的选择等等,EXTI0对应PA0,PB0......当EXTI 检测到电平变化的时候会自动向NVIC发送中断请求,最后由NVIC调转到对应的中断程序后,采用选择的触发方式,例如:上升沿、下降沿等等;