STM32学习记录(1)

发布者:神光骑士最新更新时间:2022-01-13 来源: eefocus关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

1.同时控制同个端口的多个LED,在初始化的时候,使用或运算符"|",就不用再cv一份代码进行初始化了。


2.LED,发光二极管

二极管:压降,经过自己的时侯电压会自动降低额定的伏数,0.3V或0.7v,

电流不能大于10mA,

限流电阻最小值=( 3300-300)/10 = 300欧姆。


3.引脚悬空

答:那么电阻约等于无限大,且静电积累会造成影响,导致引脚损坏。


4.按键设计的时候,为什么要加一个上拉电阻呢?而且电阻阻值设置为10K?

答:给单片机输入一个确定的电平,不加上拉电阻,单片机的输入电压没有一个参考对象,无法准确地判断为高电平还是低电平。接地,地为参考对象,则为低电平,接VCC,有个上拉电阻,上拉电阻为参考对象,为高电平。同时,也增加了抗干扰能力。


5.推挽输出作用

答:提高驱动电流。


6.上拉电阻设置为多大合适呢?

答:其实330/470/510/1K/2K /3K3/4KT/10K都是没有问题的。

但是电阻值越小,其功耗会增加,例如330欧,通过的电流则是10mA,如果是电池进行供电,那么其损耗就太大了,影响续航能力。但是电阻也不是越大越好,否则识别不了电流,所以选择一个折衷的方案,也可以说是一个经验值。

设置为10K,3.3V/10K=0.33mA。

弱上拉用10K,强一些用4.7K的。

5V一般用10K,3.3用4.7多一点。


总结:上拉电阻的选择,上拉电阻选择越大,功耗越低,但是要保证通过的电流能驱动外设和IO口,上拉电阻选择越小,功耗越大,但是要保证当为低电平时,io口端的电压要在低电平的电压值的范围之内, 经验值为4.7k到10k之间。


7.TTL识别电平如下图所示

在这里插入图片描述

8.芯片外部晶振大小

32.768KHz:看时钟树的框图可知,是提供给芯片内部RTC时钟的,32768刚好被256和128分频,得到1HZ,2的15次幂,即1S的定时。

8MHz:连接到芯片内部的锁相环回路,进行倍频,提供给CPU。


需要注意使得是:挂载在不同总线的最高频率是不一样的,例如STM32F407,CPU最高168MHz。

APB1,高性能外围设备总线1,最高42Mhz;

APB2,高性能外围设备总线2,最高84Mhz;

中间有个分频器,用来降低频率,具体数值从时钟树进行查看。


9.如何查看外设挂载在哪条总线上面

答:具体从stm32f4xx_rcc.h头文件进行查看外设是哪条总线的。


10.MCO1和MCO2是什么?

答:控制时钟输出,即也可以提供给外部输出时钟。


11.main函数之前,还有其他函数需要先运行吗?

答:系统初始化函数,在启动文件中可以看到,SystemInit。

里面主要是配置PLL,有个SetSysClock()函数。


12.关于配置PLL

答:在数据手册的RCC——PLL内容,有计算公式,使用外部时钟的时候,如果使用外部晶振,那么要注意好参数因子M/N/P/Q的取值,例如在STM32F407的头文件stm32f4xx.h中,所设置的HSE为25M,而开发板提供的一般是8M,此时就要进行修改了,ctrl+f查找到25000000的,修改为8000000,想要输出想要的数值具体得看参数因子的设置 是否正确,只要涉及到倍频,就会有计算公式。


分割线

继续

13.volatile关键字

volatile关键字分析,往往应用在三种场合

1)多线程编程共享全局变量的时候,该全局变量要加上volatile进行修饰,让编译器不要优化该变量

2)裸机编程的时候,某函数与中断服务函数共享全局变量的时候,该全局变量要加上volatile进行修饰,让编译器不要优化该变量。

3)ARM定义寄存器的时候,寄存器是指向一个地址,要加上volatile进行修饰,让编译器不要优化该变量。


编译器不要优化该变量也就是不对该资源进行保护,让任何程序随时都可以对它修改。


例如,我们在全局变量定义了一个变量a,在main函数中赋值为10,a=10;

又在一个中断服务函数中,设置a=11;那么当执行完中断服务后,a的值还是没有改变,

因为默认对a进行了资源保护,要想在中断服务函数修改a变量的值,必须在声明a变量的时候在前面加上关键字volatile,让变量a可读可写,可以被修改。


14.STM32任何一个GPIO引脚都能够实现外部中断,但是例如如下图所示,PA0~PI0只能选择一个,STM32总共有16条GPIO外部中断线,即可以设置16个GPIO外部中断。所以在初始化GPIO外部中断的时候,还需要配置外部中断线,

EXTI_InitTypeDef EXTI_InitStructure。

在这里插入图片描述

部分图示如下,其中中断优先级分组只设置一次,防止出现混乱的现象。

只要修改中断优先级分组,发现硬件的抢占优先级和响应优先级都是发生变化,导致中断管理紊乱。

在这里插入图片描述
在这里插入图片描述

中断服务函数一般写在stm32f4xx_it.c中,中断向量名称在启动文件中可以找到

在这里插入图片描述

最容易忘记的就是在去驱动开头开启系统时钟!!!

在这里插入图片描述

16.抢占优先级与响应优先级区别

1)高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。

2)抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。

3)抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。

4)无论是抢占优先级还是响应优先级,优先级数值越小,就代表优先级越高。


17.调整堆栈的大小

答:在启动文件里面设置,如果栈大小不足,会导致栈溢出,堆比较少使用。

0x4000 也就是16384字节,16384÷1024=16,即16KB, STM32的数据RAM通常是满足需求的。


18.值得一提是的,国外在写底层相关函数的时候,例如sFLASH_LowLevel_Init(void),采用lowlevel来描述。


19.程序下载没有反应,如何排除问题?

答:一看是不是程序关了sw和jtag,二看有没有识别到芯片,三看boot引脚,四看晶振。

关键字:STM32 引用地址:STM32学习记录(1)

上一篇:STM32设置内核定时器延时us
下一篇:STM32HAL库使用DAC输出任意指定电压

推荐阅读最新更新时间:2024-11-10 10:38

STM32的PWM输入模式
这个程序用的是PWM输入模式,该模式是输入捕获模式的一个特例,除了下列区别外,工作过程序与输入捕获模式一样的。 2个ICx信号映射到同一下TIxl输入(这里是CH1及CH2)。 这两个ICx信号都为边沿有效,但极性相反。 TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.
[单片机]
STM32 多路软定时器
不记得哪里听过这句话:一个产品的50%的代码用于实现功能,另外50%则用与于容错。可见容错的重要性。容错的方法有很多,其中超时机制是最常用的方法之一。超时机制,故名思议,需要使用到定时器,用定时器来产生定时节拍,然后检测对象是否在规定的时间内正常完成操作。当存在多个需要监控的对象时,如果只使用一个定时器来监控多个对象,则定时机制会产生紊乱;但如果使用多个定时器分别监控一个对象,则会导外设资源浪费或者匮乏。这个问题的解决方法是:用一个定时器外设,在它的基础上实现多路软定时器。这样的话,实际只是用了一个定时器外设,却可以获得多个定时器功能。 下面就来讲讲如何使用一个定时器外设来实现多路软定时器。还是基于我自己规范工程。 1、工程的修
[单片机]
<font color='red'>STM32</font> 多路软定时器
STM32软件的烧写方式
STM32软件的烧写方式 1 ST-LINK烧写 1.1 ST-LINK烧写的SWD模式 ST-LINK烧写的SWD模式 是ST-LINK烧写的一种方式,只需要4根接线。 分别为VCC,GND,SWCLK,SWDIO; 1.2 ST-LINK烧写的JTAG模式 在JTAG模式下的程序烧写过程中需要进行单独对板子进行供电 2 USB转串口连接线烧写(又称SPI烧写,且使用的串口必须是串口1) 2.1 方法一(该方法是对于开发板的烧写) ①Boot0和Boot1均需要接地; ②USB线必须接USB-232下载口; ③PA9和PA10(PA9和PA10是串口的收发引脚)必须连接USB串口的收发电路; ④需要在烧
[单片机]
<font color='red'>STM32</font>软件的烧写方式
巩固产品生态系统,STM32微处理器性能升级
横跨多重电子应用领域的全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST; 纽约证券交易所代码:STM) 为STM32MP1系统微处理器(MPU)产品增加了新的授权合作伙伴和软件功能,并显著提升了处理性能,将时钟速度提高到800MHz,软件引脚与650MHz产品兼容。 新STM32MP1 MPUs现在搭载800MHz Arm®Cortex®-A7双核应用处理器和209MHz Cortex-M4处理器,具有优异的语音和音频处理性能,解码质量达到高清视频级别,在神经网络和机器学习应用中,能够实现更强大的AI(人工智能)功能,还为Android系统带来更好的用户体验。新产品集成运算及3D图形加速器
[单片机]
巩固产品生态系统,<font color='red'>STM32</font>微处理器性能升级
STM32外设有哪些?
STM32系列是ST公司基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核的32位单片机。按内核架构分为不同产品: 其中STM32F系列有:STM32F103“增强型”系列、STM32F101“基本型”系列、STM32F105、STM32F107“互联型”系列。 增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是32位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,相当于0.5mA/
[嵌入式]
stm32 hal库ADC - DMA方式中断问题
希望用DMA去读取电压,但是每次转化完成后都会调用回调函数,这样太浪费CPU了,解决办法如下: http://www.stmcu.org.cn/module/forum/thread-615792-1-1.html cube默认是开启了中断,但是只要调用 HAL_NVIC_DisableIRQ(DMA2_Stream0_IRQn); 把中断关闭即可
[单片机]
STM32固件库SYSTEM 文件夹介绍
SYSTEM 文件夹里面的代码,此文件夹里面的代码由 ALIENTEK 提供,包含了几乎每个实验都可能用到的延时函数,位带操作,串口打印代码等。SYSTEM 文件夹下包含了 delay、 sys、 usart 等三个文件夹。分别包含了 delay.c、 sys.c、usart.c 及其头文件 delay.h,sys.h,usart.h。 delay 文件夹代码介绍 delay 文件夹内包含了 delay.c 和 delay.h 两个文件,这两个文件用来实现系统的延时功能,其中包含 3 个函数: void delay_init(u8 SYSCLK); //该函数用来初始化 2 个重要参数:fac_us 以及 fac_ms;同时把
[单片机]
STM32的JTAG接口硬件设计
1.什么是JTAG接口? 从感官上看,JTAG接口就是上图中的蓝色的那个20PIN的牛角座。 2.JTAG接口的作用? 1) 给单片机下载程序。 2) 在线调试单片机,例如单步调试、断电调试、看寄存器值等等。 3.STM32的JTAG接口需要在外部接上拉下拉电阻吗? 答:接和不接都可以。(没有必要讨论哪个对) 4.为什么不接也可以工作? 实践证明:不接可以正常工作。 理论依据:STM32参考手册有说明,请看下图红色圈起来的字: JTAG接口电路: JTAG接口,同样也是SWD接口,JTAG用的是6个引脚,SWD用的是2个引脚。(没有说电源负和正两个引脚) STM32支持JTAG和SWD两种方式,只需要在软件上设置切换即可
[单片机]
<font color='red'>STM32</font>的JTAG接口硬件设计

推荐帖子

51单片机程序设计代码
有用的东西大家一起分享51单片机程序设计代码好东西顶顶顶顶好东西啊收藏了~!好东西必须要顶啊
abc19900301 51单片机
dsp模拟fft出现问题
fft.asm,ERROR!atEOF:Thefollowingsymbolsareundefined:sine1cosine1该怎么处理,本人新手望高人指点!dsp模拟fft出现问题sine1和cosine1未定义...
bobyviczb DSP 与 ARM 处理器
LCD屏驱动电路
LCD屏驱动电路附件中以第二个为准 LCD屏驱动电路很好顶顶顶顶顶谢谢先谢了,顶顶顶顶顶。哈哈谢谢很好好资料啊,学习学习感觉呱呱做了好多东西啊,肯定是高手一个,希望能多多交流谢谢呱呱
songbo 单片机
【 正点原子瑞芯微RV1126测评】10 串口4和 串口5配置
【正点原子瑞芯微RV1126测评】10串口4和串口5配置【正点原子瑞芯微RV1126测评】1硬件篇【正点原子瑞芯微RV1126测评】2应用环境搭建一些问题解决【正点原子瑞芯微RV1126测评】3编译环境搭建【正点原子瑞芯微RV1126测评】4GPIO篇之led【正点原子瑞芯微RV1126测评】5input子系统【正点原子瑞芯微RV1126测评】6socket服务器和客户端编程【正点原
damiaa 国产芯片交流
Qorvo02 画着玩儿的 也有点实际用途
PA详细介绍 PA链路的简单分配及单元工作内容 整体原理图如图所示: 图1:整体原理图 整体PCB布局如图所示: 图2:整体PCB图布局3D显示Signal走向 整个布局介绍:
btty038 RF/无线
TI秀+拥有了ti处理器产品线的热门demo板
活动很以外,很多申请或购买的芯片,自己设计的开发工具都放在单位里,只能传些在家中的板子了!或者直接在EEWORLD中搜索使用TI芯片有关DIY活动或制作。这些开发工具,有些是自己购买的,有些是论坛里活动团购,或论坛赠送的!c2000系列的有TMS320F28335,TMS320F28027M3有LM3S811,LM3S8962,LM3S9B96M4有LM4F232,LM4F120armA8:AM335xStarterKiteZ430-ChronosCC430F61
蓝雨夜 微控制器 MCU
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved