一、新建寄存器版本工程模板
大体与库函数模板一致。
步骤:
1.新建文件夹作为根目录,建立user存放工程文件
2.在user工程文件夹中放入启动文件,即时钟初始化等。
3.将引用的函数定义和声明文件(视频中的系统文件)放入根目录下,
4.在mdk5中导入文件。
即完成。
串口通信借用串口调试助手获取信息。(选好波特率)
二、GPIO原理
对于stm32精英和战舰版有7组IO口,每组16个IO
GPIOA--GPIOG;
stm32大部分引脚出了作为GPIO使用外也可以复用为外设功能引脚;
(例:pa9,pa10还可以用做串口txd,rxd;也可以用作定时器;)
FT表示可以容忍5v。
工作方式:
还可以设置3种最大翻转速度:2mhz;10MHZ;50MHZ;
输入模式简介:
读取外部电平;
下拉与上拉相对。
模拟模式:
输出模式:
受N-MOS影响,输出控制电路输出1时mos关闭,输出电平用外部决定
当输出0时mos开启,IO输出低电平寄存器读取到0;
2.开漏复用输出模式与上个模式相比区别在于1位置即初始输出位置在复用功能输出不是输出数据寄存器。
3.
输出高电平时P-MOS导通,N-MOS截止。反之相反。
4.复用推挽输出模式区别同上。
推挽输出:输出强高低电平,链接数字器件;
开漏输出:只能输出强低电平,高电平靠外部电阻拉高,输出端相当于三极管的集电极,需要上拉电阻来得到高电平。应用:电流型驱动,吸收电流能力相对强,在20mA内。
注意的是I/O口寄存器按32位字被访问。
低寄存器是p(0-7)每个IO口要四位一共32位。高寄存器是p(8-15)
00输入模式;01输出模式最大速度10MHZ;10:2MHZ;11:50MHZ;
IDR端口输入寄存器:16位
端口输出数据寄存器:16位,低位输入模式配置上拉下拉,输出电平
端口位设置、清除寄存器:
可以直接将要的位置输出1其他为0,方便对某个io输出高电平;ODR需要先读。
端口复用:最大先读利用端口资源。
通过开关让端口在不同时间不同作用。
端口重映射:方便布线。将某引脚的功能映射到其他引脚。
每个IO口都可以中断输入。
三、应用库函数编写跑马灯
1.硬件链接:通过开发板原理图,搜索对应硬件外设得IO口。
2.
3.编写程序:
编译后可查看结构体和函数定义;
操作io口前必须使能对应的是时钟位。
1.使能io口时钟
2.初始化io口模式
3.操作io口输出高低电平。
在工程文件夹下建立硬件文件夹存放对应的源文件和头文件。
MDK bug要以回车结尾否则警告。
先写使能io口时钟和要操作的io口对应,写在硬件源文件中然后再这个文件中初始化io口,给io口赋初始值,选择输出模式,位,和速度。
最后在main中调用这个硬件中定义的初始化函数,然后用set和reset操作高低电平实现跑马灯。