本页自动汇总「stm32学习」分类下的全部笔记(含子分类),随笔记增删实时更新。

理解:输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数(可以想象成示波器,您细品就懂了!!!)

前提:接线和代码都没问题(一定要先检查完这个前提再往下排查,不然往下毫无意义)

看看是不是你的模块之间设置的IO口都是那一个,冲突了,错了几次,真的艹了!!!

一、下载Astyle

**链接:**​https://pan.baidu.com/s/13usAzedx_G2IvIuOVmMHrQ?pwd=hsb0
提取码:hsb0
–来自百度网盘超级会员V4的分享

二、下面针对工具的配置和使用:格式化当前文件、格式化所有的.c文件,格式化所有的.h文件、快捷方式设置

keil(MDK)中加载工具 Astyle(格式化当前文件工具设置)

  1. 在Astyle官网
  2. 下载完成后,解压到一个目录下,进入解压文件下找到binAstyle.exe
  3. 打开 keil(MDK) ,选择 Tools->Customize Tools Menu
  4. 第1步点击新建按钮,第步输入名称:格式化当前文件
  5. 第1步点击1位置,第2步点击2位置选择存放路径下的Astyle.exe



6.在下面位置输入命令(注意大小写):!E         输入完成后点击OK,会在tools里面出现如下图添加的工具


7.上述配置完成,我们现在使用,找到一个文件,选择​Tools->格式化当前文件​ 。​图一是未格式化​ ,​图二是格式化后****​ 。

keil(MDK)中加载工具 Astyle(格式化.c和.h文件 工具设置)

  1. 配置和格式化当前文件一样。也是使用的是Astyle.exe
  2. 取名和另一个配置如图。.c文件配置:-n "​$E.c"         .h文件配置:"$​E​ .h" *


    keil(MDK)快捷键执行代码的快速格式化(​
    快速格式化工具设置​ )
    Edit->Configuration​
    切换到​Shortcut Keys​选项,选择​格式化当前文件​ ,点击​Create Shortcut​*****创建新的快捷键,在弹出的窗口按下你要设置的快捷键,然后保存退出,使用格式化就是自己设置的快捷键。如下是图文操作方式。******​ ******1.打开设置。****​ **Edit->Configuration->Shortcut Keys

    2.按照如图的方式设置。图中第5步使用直接输入自己的命令。如:Ctrl + T

1.勾选 Reset and Run(主要)

2.不勾选Enable(第2点这里,有就勾,没有的话,不勾也无所谓的)

一、Keil5代码自动补全

对于一些stm32自带的一些库函数有时候名字很长,如果自己敲的话就很很麻烦,甚至有时候会敲错。好在keil有自动补全这一功能,大大提高了编程速度。
步骤:1、打开keil5,点击edit,configraution

选择跟编译相关的Text Completion,然后勾线第三个

测试结果是没有问题的。

二、keil加快编译速度

我们编程人员是很在意编译速度的,keil5在代码量大的时候,编译速度简直了。特别是使用STM32cubeMX生成工程的时候,编译速度龟速。这里教大家一个小技巧。
点击我们的魔术棒。进入output

把我们的文件信息这一选项​取消勾选​这个功能是使用go to definetion的,如果不勾选那肯定不行啊,我们编程经常用到go to definetion。别急,我们没了这个功能我们可以想别的办法,但是编译速度我们没法忍。


这是没有勾选之前,编译整整编译了三分钟!抓狂。这完全就是两个不同的世界。

勾选之后20秒钟就可以了

三、go to definetion问题如何解决

我们可以换一种方式来替代go to definetion。例如我们想看MX_GPIO_Init();这个函数
按Ctrl+F,就会弹出这个窗口。选择current project,他就会在整个工程里面找

​这样他就会帮我们找到了,他会帮你包含这个名字的函数或者声明​

总结

对于加快编译速度来说,这不失为一种方法,但是你得到某些东西的话,你总会失去某些东西,比如go to definetion。这里建议大家慎用。

注册机链接如下

**链接:**​https://pan.baidu.com/s/1Ag8Aq19r_K7NVnGl9p5PMA?pwd=xim0
提取码:xim0
–来自百度网盘超级会员V4的分享

① 打开Keil5软件

② 在打开的对话框中复制自己软件的ID,然后粘贴到注册机对应的位置。

③ 复制到注册机中后点击Generate(注意:Target选ARM)

④ 输入到软件对应的位置即可完成破解

OC理解:输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形(可以想象成信号发生器,您细品就懂了!!!)

PWM简介

(上图中Ts的值从第二个图中可以看出,代表一个高低电平变换周期的时间;Ton代表一个高低电平变换周期内高电平所占的时间)

PWM核心思想:天下武功,唯快不破,只要我闪的足够快,你就发现不了我到底是闪着亮的,还是一个正常的、平稳的亮度
(注意:使用PWM必须是在一个惯性的系统中)
ps:

①:LED在熄灭的时候,由于余晖和人眼视觉暂留现象,LED不会立马熄灭,而是有一定的惯性,过一小段时间才会熄灭

②:当电机断电时,电机的转动不会立马停止,而是有一定的惯性,过一会才停)

PWM参数计算

1、获取安装包,链接如下:

**链接:**​https://pan.baidu.com/s/1p4d7C_iwPF46ReDbf-SHVg?pwd=ml3e
提取码:ml3e
–来自百度网盘超级会员V4的分享

2、开始安装

①:下载好pads9.5.iso之后,鼠标右击软件压缩包,选择“解压到pads9.5”
②:打开解压后的文件夹,鼠标右击“PADS9.5_mib.exe”选择“以管理员身份运行”。

③:然后按照上图所示的​PDAS9.5安装说明.doc​文档安装即可

⚠️非必要不要更改它指定的安装路径,直接默认就好,然后不断的 next,虽然安装在 C 盘,但没办法了,因为它环境变量啥的都会自动给你生成C盘的那个路径,贼傻B 反正
==注意:非必要,不要执行下图所示的东西,不然环境变量Path里面的东西都给你整没==

(嫌无聊直接看最后一行的结论)

一、原理

1.按键类型

现在市场上大部分采用的都是这种按键按钮微动开关,这个开关使用简单、价格便宜。

2.按键消抖

因为按键按下和弹起这段时间会产生抖动现象,该现象会导致按键扫描误判。按键按下的瞬间和弹起的瞬间都会产生一个10ms的抖动时间,我们要在按键第一次判断为按下的时候,延时10ms再对它进行一下判断,如果判断结果还是为按下,我们这里认为按键此时被按下,松手检测直接用一个while循环等待既可,当松开按键,while的条件为假 退出循环。此时视为按键被松开。

3.IO口输入配置

IO口的输入模式有四种,分别为:
GPIO_Mode_AIN = 0x0, // 模拟输入
GPIO_Mode_IN_FLOATING = 0x04, // 浮空输入
GPIO_Mode_IPD = 0x28, // 下拉输入
GPIO_Mode_IPU = 0x48, // 上拉输入

总结:

①:模拟和浮空输入都不适合于按键,下拉输入默认低电平,上拉输入默认高电平

②:对于按键来说,选择上拉还是下拉,完全取决于按键电路是接地还是接VCC,接地选上拉,反之选下拉。

!!!接地选上拉,反之选下拉 !!!


这两端任意哪一端接VCC/GND都可以,但是必须是在一条直线上的才是一对,另一端接控制的 I/O口, I/O口实际的逻辑按照上面那句话的结论来写即可

报错示意图如下:

开始排查

①:确认ST-LINK与stm32芯片的四个引脚连接是否正确(这一步至关重要,先排查完这一步才往下走,不然都是浪费时间!!!)
②:按照如下示意图进行操作


确认一下②那个地方是否是ST-Link Debugger

stm32F103C8T6芯片

①只有TIM 1,2,3,4 4个定时器

  • Reset是给低电平,Set是给高电平
  • 代码提示快捷键:Ctrl+Alt+空格
  • GPIO设置好了之后默认输出低电平,GPIO就是单片机与外部设备通信的接口,用来读取外部设备的信号或者控制外部设备的状态
  • 推挽模式和开漏模式:推挽输出高低电平均有驱动能力,开漏输出高电平相当于高阻态,没有驱动能力,低电平有驱动能力(所以一般用推挽模式,特殊的时候才用开漏模式)
  • 三级管:指向基极的是PNP型,从基极指出的是NPN型,PNP型:基极给低电平导通,高电平断开,NPN型:基极给高电平导通,低电平断开
  • 32里面中断的函数不是像51一样加一个interrupt小尾巴,是以函数名为标识符的,也就是说函数名不能打错
  • 总线、外设

把接收模式改成文本模式即可

很简单,将下面链接里面的文件放入到自己的​Keil安装路径→UV4目录​下即可,放入之后,需要​*==重新启动keil软件==*

提取码:o58k
–来自百度网盘超级会员V4的分享

目录示例图

使用场景

用于在OLED上显示中文

一、下载软件包

pctolcd2002.zip
把压缩包下载下来

二、解压缩

解压缩之后的目录结构如下图所示

双击PCtoLCD2002.exe

三、配置

点击选项

选择C51格式,并点击确定(必须要点击确定之后才生效)

回到主界面,选择对应的字宽和字高(这里的字宽和字高要与代码里面的显示逻辑对应上,不然显示的会很奇怪)

四、生成字膜

在①中输入需要生成字膜的文本,点击生成字膜,然后复制矩形框里面的内容到代码里面即可

**链接:**​https://pan.baidu.com/s/1-M5NQkRW-qr_iaqW380BTg?pwd=m54n
提取码:m54n
–来自百度网盘超级会员V4的分享

把压缩包解压之后会得到如下所示的目录结构

1. 安装keil

双击MDK524a.EXE,不断下一步,到选择安装路径时选择一下安装的路径即可

2. 对keil进行破解

详情看自己写的笔记,至于注册机,则是keygen_new2032.zip里面的一个软件,解压之后双击即可

3.安装芯片库

进入到支持包​****目录,****​会看到如下所示的目录结构

使用什么型号的芯片就双击安装哪个型号的芯片,我这里使用的是​Keil.STM32F1xx_DFP.2.2.0.pack​ ,所以我双击Keil.STM32F1xx_DFP.2.2.0.pack,不断下一步,到选择安装路径时选择一下安装的路径即可

4.安装ST-LINK驱动(用来烧录用的)

进入到工具软件​****目录,****​会看到如下所示的目录结构

再双击进入​STLINK Utility​目录,再双击进入​STM32 ST-LINK Utility v4.6.0​目录,会看到如下所示的目录结构

双击​setup.exe​ ,不断下一步,到选择安装路径时选择一下安装的路径即可
至此前期工作已经全部完成,完结撒花!!!

5.测试环境

在Keil5 MDK目录中,进入到程序源码目录下,随便找一个项目