OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2261|回复: 0

新人入门STM32的学习总结与疑惑

[复制链接]

24

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2017-10-21
在线时间
41 小时
发表于 2017-11-3 13:37:07 | 显示全部楼层 |阅读模式
本帖最后由 ForestLi 于 2017-11-3 13:41 编辑

刚接触STM32

跑马灯实验

   (1)首先先了解关于IO的原理和7个配置寄存器;主要是

CRH、CRL:这两个寄存器一模一样,唯一的区别就是一个是高位一个是低位;
一CRL为例: 每个CRL中都有4位一个单位,包括一个MODE选择输出还是输出模式(输出模式具有三种不同的速度)和CNF选择具体的输入(输出)模式
IDR、ODR:这两个是IO状态寄存器;IDR是一个只用了低16位的只读寄存器,用来读取对应IO的电平状态。ODR也是只用了低16位得可读写的寄存器,用来控制对应的IO的输出和读取“输出状态”。
BSRR:是一个端口位设置/清除寄存器;高16位是BRy,设置为1时对应位输出为置0,设置为0时无影响(这就是好处所在,不用顾虑会不会影响到其他的IO)
                                    低16位是BSy,与上面相反;
BRR:端口为清除寄存器,作用与BSRR高16位作用雷同;
LCKR:32位的锁存寄存器;

其次写代码:(首先消除心理恐惧:新人看32代码,总觉得32的代码里的函数都好长好长啊,而且还那么多大小写,keil又不像VS一样支持提示选择,那样写起来的多麻烦啊!!
其实不用担心,因为库函数不需要自己一个字母一个字母地去敲,只要去相关文件中去找对应的函数就行了,所以,就是基本一直在copy)

(2)LED驱动代码书写    (注意:所有文件都应该包含stm32f10x.h头文件)
         a.使能使用到的IO时钟,用到FWLIB里的rcc文件中的RCC_APB2PeriphClockCmd()函数,这里传递两个参数,一个是IO组,一个是开ENABLE(或者关DISABLE)
         b.配置IO模式,定义一个GPIO_InitTypeDef的结构变量,这个结构变量里有GPIO_Mode、GPIO_Pin、GPIO_Speed三个成员,分别对他们初始化;然后
使用IO初始化函数,用初始化好的结构去初始化IO 口,函数举例:GPIO_Init(GPIOB,&GPIO_InitStructure);
         c.初始化IO之后就是控制IO的高低电平了,这时候用到GPIO_SetBits()函数,需要两个参量,IO组名和IO脚号
        d.然后再主函数中包含这个驱动的头文件就行了,延时函数去delay.c中去找,里面有us级的和ms级的延时函数;
有个疑问,我的开发板(战舰F1)插上去和拔下来的时候总是黑屏(壁纸没了),这是什么原因。。。。


板子的USB拔下来之后

板子的USB拔下来之后
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 13:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表