stm32学习

工程创建
对于启动文件的选择

创建工程的基本步骤

第二步的文件夹没有数量和名称的要求,主要目的是方便管理文件
第三步是在kiel软件里做的操作,记得不要加入工程外的文件,要不然外面的文件修改文件位置就找不到了,这是为什么需要复制文件(要保持工程的独立性)
第四步,对于自己创建的文件,需要告诉kiel它的路径
第五步,这是因为库函数文件有一个条件编译,没有这个就不能使用库函数
第六步,作用是每一次重新下载程序自动复位不需要手动按复位键
工程框架

左侧是主动执行,右侧是被动执行(一些资源)
右侧上方是寄存器的信息和地址
下方是函数信息
直接使用寄存器编写代码的方式有弊端很麻烦(需要进行!=之类的操作,保证在设置一个寄存器的某一位的值时不影响其他位)
只需include一个头文件就相当于包含了所有的库函数头文件
stm32f10x.h

引脚电压0~3.3V:低电平0V高电平3.3V
有些可以容忍5V意为输入5V可以作为高电压

推挽输出高低电平都有驱动能力
开漏输出高电平相当于高阻态,没有驱动能力,低电平有驱动能力
PA15、PB3、PB4这三个端口是调试端口如果要当做普通端口使用需要进行一些配置
按键
按键抖动:在按下和松手的瞬间会伴随一连串的抖动,通常是5-10ms
中断

NVIC是stm32中一个管理中断优先级的东西

用医院病人排队举例
NVIC分组,分为两种:
响应优先级:正常病人是排队的,但是当有一个病人是紧急的,这个病人就可以等正在看病的病人出来他直接去看病(插队,后来先进)
抢占优先级:同样是排队,一个病人快死了,他可以直接进入看病,目前正在看病的病人先让开,等他看完再接着看(中断嵌套)
这里注意:不存在先来后到的排队,只有优先级的排队,当抢占优先级和相应优先级序号相同时,根据他们不同的响应种类在排序,都是序号小的先处理

这个分组有点像计算机网络里的子网划分,一共四位,根据需要自己分配
EXIT

触发条件中的软件中断指程序中一行代码指令也可触发中断
支持的GPIO口中相同pin不能同时触发中断,比如:PA1、PB1、PC1都有,但是只能选一个,
像PA2、PB3,PA1、PA2,这样的都是可以同时触发中断的
触发响应方式中的事件响应指发生中断,不会走正常流程去中断cpu而是去执行其他外设操作
定时器TIM


一些公式:

输出比较

PWM波形

以灯泡的逐渐亮灭为例:
pwm可以输出控制亮灭的高低电平,使其达到一种人眼看不出来的频率快速切换,通过调整亮灭的比例就可以呈现出灯泡的不同亮度(人眼会将平均亮度作为亮度)
但是电机速度也是一样的,这个跟人眼没关系了
pwm必须工作在一个惯性系统:LED因为余晖和人眼的暂留效用不会立刻熄灭,电机也是不断电后立刻停止转动
pwm通过数字信号生成模拟信号

冻结:暂停输出
在这里有效电平 和无效电平 理解为 高电平和低电平
一些公式:

频率测量
