7.18记录STM32学习

  一. 搭建keil时,keil的安装的路径不能有中文汉字,必须是全英文字母,否则会出现keil找不到资料,创建工程时连板子型号都无法选择。

二. STM32字面意思上,ST是一家半导体公司的缩写,中文名叫意法半导体,M是微型控制器MCU 的缩写,32代表这个微型控制器是32位处理器的。STM32内部资源丰富,可以外接许多种外设,也就可以做许多种物品,比如四轴无人机,小米手环等等。

三. 一块STM32芯片是MCU,MCU是微型控制器的意思。微型控制器虽然体积小,但内部集成了CPU、ROM和RAM,可以执行一定代码量的简单操作。而芯片内部的通讯总线连接着FLASH、SRAM和片上外设。而这三个部件上的 功能被整齐的放在了一个大小为4GB的内存空间,而这个给内存空间分功能(也就是分一个地址,每一个地址代表着一个功能)的过程叫做存储器映射,映射完后操作这些地址就是操作那些地址所指定的外设的功能。分配完后会发现一连串的数字表示地址容易出错(可能会打错一两个数字),于是按照功能给每个地址赋予名字,这个名子被赋予的过程叫做寄存器映射,而那个为地址取的名字统称寄存器。

四. 1.不在STM32芯片内部的外设,都是用GPIO这个寄存器所连接的引脚操作的,一般连接的那个引脚也叫GPIO,GPIO引脚有很多个。不过只通过调电平就能操控那些繁琐的外设,真的是天才的想法。

2. 新建工程要将STM32 对应的启动文件添加至要编译的文件夹中,对应的启动文件是用汇编语言写的,启动文件用于将汇编语言与keil环境的C语言连接起来,这也是为什么能用keil写单片机操作。启动文件是连接作用,还有Linux和其他的单片机编译环境,所以也有对应的启动文件,这些启动文件名字一样,但对应的编译环境不一样,如果用错了,会报错,keil的在arm文件下。

3. 点LED灯是芯片外的外设,用GPIO操作就行,GPIO要想起作用,首先要第一个启动GPIO的时钟(没有第一个启动时钟,后续的该寄存器赋值都不会有效的!泪目。。。。。。可以理解为先启动时钟就是先让人的心脏跳起来。),也就是操作管理GPIO时钟的的寄存器。

开启对应时钟后,选择GPIO对应引脚的输入或输出模式,这里是输出模式,然后选择引脚的工作模式(输出有推挽,复用,开漏还有模拟;输入有上拉,下拉和浮空,浮空指不上拉也不下拉电平的不对输入电平改变的操作),

引脚输出模式的话还要配置输出模式的输出速度,分为2,5,20,75,单位MHZ,不同的MCU,输出速度可能不同吧;

输出模式需要调整输出电平是上拉模式还是下拉电平模式。

点灯最后一步设置输出模式的输出电平,高电平或低电平。

五.

1.标准库是用函数封装起来的一条条寄存器赋位指令,只需要改变形参,就能对函数里面的寄存器赋值,而且省去了写地址和寄存器的时间

 如上图,只需要调用LED_Init(void)这个函数,它就会帮自动完成寄存器的赋位,而LED初始化函数里还有封装好的GPIO赋位函数,只需要通过调整形参,就能完成花式赋值,省时省力,在没用过标准库之前,我对用寄存器赋值很上头,很有耐心的一个一个赋值,用过标准库后就不太想再用寄存器赋值了。

2. volatile关键字在单片机中的作用

 上面有一个volatile关键字,作用是防止编译器优化这个变量,优化变量的作用是,把一个值从堆内存中调出来,放到缓存的栈内存中,因为从缓存中读取变量更快。一旦编译代码时发现一个变量代码没有改变它时,编译器就会优化这个变量,而单片机寄存器上的变量大多数时候并不是通过代码来改变的,而是被外设或者其他的东西改变值的,为了保证最新的变量信息能被读取到也就是直接从寄存器上读取而不是从缓存上读取,就必须保证这个变量不会被编译器优化。所以 加上volatile关键字上保险就行。


记录于2022.7.18

六. 

1.用f103学习时,似乎系统时钟已经配置好了,直接写例程没有遇到什么问题,但用f429时,官方教程中没有标准库教程,并且比f103多了个HAL库的系统时钟配置,当我不用那个HAL库的系统时钟初始化的函数时,跑马灯实验虽说代码延时是500ms,但实际上延时超过了5秒,挺离谱的。猜测应该是没有配置锁相环PLL所以系统直接采用了内部时钟HSI作为系统时钟(只有16MHZ)。

 2.启动文件会先调用SystemInit()再调用main函数于是我决定将启动文件中的SystemInit()作为系统时钟的配置。

3.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值