推荐阅读最新更新时间:2024-03-16 14:58
STM32之寄存器开发
首先克服心理作用,不要总是默认寄存器开发难,其实寄存器开发和库函数开发所用的方法和难度是一样的, 并不难,下面用以stm32为例解释。 : 1.明确自己需要的功能(库函数开发也需要) 2.查看手册,找到功能对应的单片机资源 3.找到功能所需寄存器(库函数开发需要找到相应的功能函数) 4.根据地址每位对应的功能赋值(库函数开发需要找到相应的入口函数) 5.调试结束。 而且寄存器开发不难但是麻烦,有很多没接触过的名词(有可能是一些英文缩写),所以需要耐心,慢慢品味。如果这些名词弄清楚了,寄存器开发反而会比库函数开发简单、方便。 注:名词或需要整理的步骤太多可以手动记一下,既有利于理清思路,也方便回看时
[单片机]
STM32采用普通的IO口来测量PWM的频率
STM32测量外部输入信号的频率的方法有很多: 采用内部定时器输入捕获功能。 采用普通的IO口设置外部中断+定时器的当时测量PWM信号的频率。 这两种方式比较推荐使用第一种,比较使用内部的资源可以节省CPU资源的利用, 当然当内部资源不够使用的时候,或者是说,硬件电路设计的时候没有连接相应的应引脚只能使用第二种方式了。 本次由于硬件电路设计的不足,导致需要测量PWM输入信号的引脚没有接到相应的通道上,对此使用了第二种方式: 注意:这里定时器中断的优先级要高于外部中断的优先级 思路如下: 设置PWM输入信号的引脚为外部中断的方式,并且触发方式为GPIO_MODE_IT_RISING_FALLING 上升,下降沿均
[单片机]
JFlash ARM对stm32程序的读取和烧录
本篇文章主要是记录一下JFlash ARM 的相关使用和操作步骤,读取程序说不上破解,这只是在没有任何加密情况下对Flash的读写罢了! 在我们装了JLINK驱动后再根目录下找到JFlash ARM ,运行。 读取Flash程序: 第一步:Option-- Project Settings-- CPU下选择 Device 在下拉菜单中找到自己的芯片型号后点击确定。 第二步:Targect-- Connect链接JLINK ;Targect-- Read back-- Entrie chip读取整个Flash区域, 接下来就等待读取完成了。 第三部:File-- Save file as 选择要储存的文件类型如:HE
[单片机]
stm32启动文件ld md hd cl vl xl分析及选择
说的直白点就是以下区别,在选择启动文件的时候有选择性区别! startup_stm32f10x_cl.s 互联型的STM32F105xx,STM32F107xx startup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xx startup_stm32f10x_hd_vl.s 大容量的STM32F100xx startup_stm32f10x_ld.s 小容量的STM32F101xx,STM32F102xx,STM32F103xx startup_stm32f10x_ld_vl.s 小容量的STM32F100xx startup_stm32f10x_md.s 中容量的S
[单片机]
STM32 串口发不出来数,或全0的问题
开始调试STM32串口的时候,怎么尝试,上位机都只收到0。对照例程自己一步一步写下来都不行。最后无奈,把例程直接全部复制粘贴过来,发现好使了。 后来几次用到串口的时候,又调了几次,貌似发现了一些问题。串口的初始化的顺序会造成输出全0的情况。正确初始化顺序如下: RCC_Configuration(); USART_GPIO_Configuration(); USART_Configuration(); NVIC_Configuration(); 或者: RCC_Configuration(); NVIC_Configuration(); USART_GPIO_Configuration();
[单片机]
STM32学习一:那些MDK5的坑
话说前阵研究了一会Arduino,并用它实现了一些简单的产品,如自制了一个PM2.5检测仪,由于可以选择任何传感器,我选择是口碑不错的攀藤PM7003,是一款检测精度较高的激光传感器,做出来的检测仪检测精度直逼数千甚至数万元的国外同类产品,这让一个原来主要接触软件开发的我似乎又看到了一个更为广阔的硬件世界,拿着榔头看哪都是钉子,我现在看到一个硬件就想它后面的技术原理。 当然,在研究Arduino的也过程当然也遇到了一些问题,比如它的MCU还是不够强大,接口不够丰富等,最主要的是我发现批量生产的产品大多数在用另一个平台——STM,该平台价格低廉,功能强大,商用产品无数,有关庞大的开发者,相比起来Arduino比较适合用来做非大批
[单片机]
STM32寄存器操作方式学习-通用定时/计数器之影子寄存器
在这幅图中细心的朋友可能会发现,有些寄存器的方框下面有阴影,这就是表示该寄存器有相应的影子寄存器。 这种寄存器表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preload register(预装载寄存器),另一个是程序员看不见的、但在操作中真正起作用的寄存器,称为shadow register(影子寄存器);正如手册上的14.3.1节所说,根据TIMx_CR1寄存器中APRE位的设置,preload register的内容可以随时传送到shadow register,即两者是连通的(permanently),或者在每一次更新事件(UEV)时才把preload register的内容传送到sha
[单片机]
STM32如何高效接收串口数据?
硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 DMA,直接内存存取,可以用它的双手释放CPU的灵魂,所以,本文通过USART3进行串口收发,接受使用DMA的方式,无需CPU进行干预,当接受完成之后,数据可以直接从内存的缓冲区读取,从而减少了CPU的压力。 具体的代码实现如下: usart_driver.h 封装了接口,数据接收回调函数类型,基本数据结构等; usart_driver.c 函数原型实现,中断服务函数实现等; 拷贝这两个文件即可,可以根据目录下的参考用例,进行初始化。 头文件usart_driver.h已经声明了外部函数可能用到的接口; USART3_DR的地
[单片机]