一个简单的工程搭建好之后,进一步就是了解里面的内容,也就是学习进入正轨。打开我之前新建的工程,主要调用的几个函数就是今天学习的内容,接下来我就讲解一下那些内容。一、初始化始终 这里的“时钟配置”函数在bsp.c文件下面;使能了GPIOA --- GPIOD时钟,这里更加自己使用的IO进行配置(该工程实际只使用GPIOC)。 二、基本输入输出引脚配置 这里的“基本输入输出引脚配置”函数同样在bsp.c文件下面;初始化GPIO, 包含端口引脚、频率、输出类型。 三、底层初始化这里的“底层初始化”函数同样在bsp.c文件下面;以后的底层初始化代码还会增加...
今天总结STM32F103串口,以工程实例来讲述。工程现象:1.间断发送字符 2.接收中断(接收字符,并发送该字符) 软件工程下载地址(360云盘):https://yunpan.cn/cPEI3zyQ7UqJv 访问密码 ee52 讲述分如下几点: 一、串口时钟这里的“时钟配置”函数在bsp.c文件下面;使能串口1(RCC_APB2Periph_USART1)时钟。 二、USART1引脚配置这里的“USART1引脚配置”函数在usart.c文件下面;初始化串口使用引脚, 包含端口引脚、频率、输出类型。 三、串口配置这里的“串口配置”函数在usart.c文件下面;详见每一句后面都有注释。四、...
今天讲解STM32F103定时器延时功能,TIM的功能很强大,后续慢慢讲解。今天从简单开始讲解定时器,以下面软件工程实例来讲述。软件工程下载地址(360云盘):https://yunpan.cn/cP5utM7kxIReM 访问密码 6f12工程现象:间隔(定时器延时)500ms LED变化一次, 并且串口打印STM32F103ZE有8个定时器(TIM1 – TIM8), 这里工程使用TIM4为例。STM32F10x的资料可以在我360云盘下载:https://yunpan.cn/crBUdUGdYKam2 访问密码 ca90关于TIM延时,我把重要的几点在下面分别讲述,工程中没有在这里讲述的请关注微信公众号“EmbeddDeveloper”查阅或留言。现...
今天讲解STM32F103定时器定时-中断功能,在昨天定时器延时的软件工程上添加TIM3定时的功能,你们也可以试着将昨天的工程添加修改得到。今天的软件工程下载地址(360云盘):https://yunpan.cn/cPnJ9KYcXbPsP 访问密码 acd8工程现象:间隔(定时器定时)500ms LED变化一次, 并且串口打印STM32F103ZE有8个定时器(TIM1 – TIM8), 改工程以TIM3定时为例。STM32F10x的资料可以在我360云盘下载:https://yunpan.cn/crBUdUGdYKam2 访问密码 ca90关于TIM延时,我把重要的几点在下面分别讲述,工程中没有在这里讲述的都是之前就有的,重点讲述的是主题相...
今天讲解“STM32F103ADC单通道单次采集”功能。 今天提供并讲解的软件工程,基于软件工程“A0.0.0(STM32F10x_TIM延时)”修改而来。本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友推广一下微信公众号,增加一下人气。每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。 今天的软件工程下载地址(360云盘):https://yunpan.cn/cPGrE6DLHX24R 访问密码 de4f STM32F10x的资料可以在我360云盘下载:https://yunpan.cn/crBUdUGdYKam2 访问密码 ca90 关于“STM32F103ADC单通道单次...
今天讲解“STM32F103 DAC输出电压”功能。 今天提供并讲解的软件工程,基于软件工程“A0.0.0(STM32F10x_TIM延时)”修改而来。若不知道如何而来,请关注微信公众号“EmbeddDeveloper”获取更多信息。本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注和推广一下微信公众号,增加一下人气。每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。 今天的软件工程下载地址(360云盘):https://yunpan.cn/cPU3YIHzcu6Eu 访问密码 11f0 STM32F10x的资料可以在我360云盘下载:https://yu...
今天是母亲节,在这祝福天下所有母亲节日快乐! 今天讲解“STM32F103 SPI读写Flash”,其实这第一阶段主要是讲解STM32的SPI功能,所有今天的重点是SPI,关于FLASH我应该要在后面再次讲述。今天提供并讲解的软件工程,基于软件工程“A0.0.0(STM32F10x_TIM延时)”修改而来。若不知道如何而来,请关注微信公众号“EmbeddDeveloper”获取更多信息。本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注和推广一下微信公众号,增加一下人气。每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘...
今天讲解“STM32F103 SPI主从通信”,原本计划将这部分内容定在后面(第二阶段)来讲解,满足一位网友的问题“关于两块MCU的SPI通讯”,所以今天特地提前讲解了。由于昨天讲解的是“SPI读写Flash”,MCU是作为SPI通信中的主机,今天主要讲解SPI通信的从机,我将我测试的主机和从机的代码分别打包供大家下载测试。今天提供并讲解的软件工程,基于昨天的软件工程“SPI读写Flash”修改而来。若有疑问,请关注微信公众号“EmbeddDeveloper”获取更多信息。 本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注和推广一下微信公众号...
今天讲解“STM32F103 DAC输出三角波形”,比较基础,但对于初次使用该功能的朋友来说,还有有借鉴价值。 今天提供并讲解的软件工程,基于昨天的软件工程“DDAC输出三角波形”修改而来。若有疑问,请关注微信公众号“EmbeddDeveloper”获取更多信息。 本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注和推广一下微信公众号,增加一下人气。每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。 今天的软件工程下载地址(360云盘):https://yunpan.cn/cPi8GB2DyeKzI 访问密码 1a45...
今天讲解“STM32F103 EXIT中断”,关于EXIT中断里面有很多学问,以我的工作经验来看,有几点是特别容易犯错的,我会在文章最后重点讲解。 每次讲解的不仅仅是基础,而是重点,不起眼的重点,容易被人忽视的重点。关注微信公众号“EmbeddDeveloper”还有更多精彩等着你。 今天提供并讲解的软件工程,基于前面的软件工程“TIM延时”修改而来。若有疑问,请关注微信公众号获取更多信息。 本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友分享、关注和推广一下微信公众号,增加一下人气。 每天提供下载的“软件工程”都是在硬...
今天讲解“STM32F103 BKP备份数据”,关于“BKP备份数据”这一块的知识不难,但还是需要注意几点。BKP顾名思义就是备份寄存器(见参考手册),主要用于备份数据使用的。 每天讲解的不仅仅是基础,而是重点,不起眼的重点,容易被人忽视的重点。关注微信公众号“EmbeddDeveloper”还有更多精彩等着你。 我的文章与网上其他文章不同之处在于:1.提供讲解的软件工程; 2.图片代码比直接贴出源代码容易阅读。 今天提供并讲解的软件工程,基于前面的软件工程“TIM延时”修改而来。若有疑问,请关注微信公众号获取更多信息。 本着免费分享的原则,将讲...
今天讲解“STM32F103 RTC闹钟”,说起“闹钟”大家肯定不会陌生,基本上我们每天都在接触。今天说的“RTC闹钟”就是我们现实生活中的闹钟,只是今天站在技术知识的角度来看待“闹钟”。由于这一阶段定位的是基础的知识,所以今天提供的软件例程也是相对简单一点的,但明白今天的知识,相信自己都会写闹钟程序了,后期我会更新日历及闹钟的综合知识。 每天讲解的不仅仅是基础,而是重点,不起眼的重点,容易被人忽视的重点。关注微信公众号“EmbeddDeveloper”还有更多精彩等着你。 我的文章与网上其他文章不同之处在于:1.提供讲解的软件工程; ...
前言 今天讲解“STM32F103 TIM输出PWM波形”,提供的软件工程支持最大输出18MHz的PWM波形,函数接口只有两个参数:频率Freq 和 占空比Dutycycle。 定时器的功能很强大,今天讲解的PWM属于定时器中比较输出的功能,难度算一般吧(懂了的人觉得很简单),因为使用了比较的功能。 PWM在实际应用中特别广泛,可能在校的学生不是很了解,但对于很多工作的人来说PWM的应用基本上遍布整个电子化的时代。对于电子相关专业的学生来说,信号发生器都不陌生,信号发生器就是PWM典型的应用。 每天讲解的不仅仅是基础,而是重点,不起眼...
前言总结可以发现自身的缺陷;总结可以成就自己的梦想;因此,今天总结一下近期的知识。由于近期的知识都是比较基础的,如果已经掌握了可以绕过,没有掌握请继续浏览。每天讲解的不仅仅是基础,而是重点,不起眼的重点,容易被人忽视的重点。关注微信公众号“EmbeddDeveloper”还有更多精彩等着你。 本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。 汇总知识1.进入开发阶段,你准备好了吗?2.新建软件工程的讲解3.STM32控制IO基本配置的讲解4.STM32_USART输入输出的讲解5.TIM延时...
前言 今天讲解“STM32F103 SysTick系统滴答”,“SysTick系统滴答”是属于Cortex-M3内核的一部分,主要是为运行的操作系统提供滴答时钟,如常见的操作系统:uCOS、RTOS等。不管M3芯片属于哪一家公司,它都标配有SysTick这一部分。因此,它属于芯片内核的一部分,主要是为了方便操作系统的移植。 其实,SysTick能实现的功能,都可以由TIM来实现。SysTick无非就是定时中断的功能,它完全可以由TIM定时器来完成。之所以SysTick独立出来就是因为它属于内核一部分,方便用户移植,而且简单方便。学过uCOS的人都知道,以前在51,或者430上面...
前言今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。总结一下二者的区别:1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR2)、IWDG没有中断,WWDG有中断3)、IWDG是12位递减的。WWDG是7位递减的4)、IWDG只有下限,WWDG有下限和上限5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看...
前言今天总结“STM32F103 DMA_USART”,DMA学习过计算机人都明白它是什么意思,就是直接存储器存取(Direct Memory Access),很多人都知道它的意思,但基本上不知道的怎么用,或者不知道它的用途。其实DMA在计算机里面是非常重要的,它可以减少CPU的资源。大家都用U盘拷贝过数据,这就是很常见的DMA应用。假如不适用DMA传输数据,我们拷贝大文件的时候,我们的电脑操作其他应用程序的时候估计会把电脑卡死。今天就总结一下DMA常用于串口通信的例子,实例源代码请自行下载。由于时间有限,只讲解了DMA发送及中断,接收这一块还没有来得及整理,后期...
前言今天总结“STM32F103 片内FLASH编程”,对于学习编程的人来说“FLASH”这个词肯定很熟悉,因为FLASH主要用于存储数据。对于STM32来说,内部FLASH的容量有大有小,从16K到2M不等,主要看芯片的型号。对于刚从51或者430转入学习ARM-Cortex M芯片的人来说,可能只知道内部FLASH是拿来装载程序的,事实上Cortex M芯片内部FLASH的可以拿来编程的,而且还可以像外部FLASH一样存储数据。对,今天提供的工程就是使用内部FLASH像外部FLASH一样读写数据,而且不是块或者页编程(即不覆盖临近地址数据)。在实际的开发中,内部FLASH存储数据也是很重要的...
前言今天总结“STM32F103 FSMC读写外部SRAM”,主要使用FSMC来控制外部SRAM,对SRAM进行读写的操作。本文章提供的工程对SRAM读写从操作类似于对FLASH读写操作。关于STM32的FSMC(灵活的静态存储器控制器)这一部分内容比较实用,在实际应用中也是比较重要的(对于需要实用FSMC来说)。运用FSMC来控制外接器件比运用软件模拟来控制效率要高的多,而且操作简单。也许对于初学者来说,对FSMC不了解,或不感兴趣。因为FSMC在实际开发中主要用于外扩RAM和ROM,初学者对于RAM和ROM的需求不高,基本上内部资源都够了。对于喜欢使用LCD屏的人应该了解FSMC,...
前言 今天总结“STM32F103 外部SRAM作为运行内存”。对于运行内存应该都知道它的意思,主要是程序运行时所使用的RAM,比如我们定义的全局变量、局部变量这些在程序运行时都会在RAM中为它们开辟一片空间,用于运行时所使用。 今天提供的工程是基于前面“TIM延时”的工程修改而来,但是今天的例子是使用ST官方提供的标准库里面“system_stm32f10x.c”文件里面现成的函数接口(使用寄存器配置),使其控制外部SRAM作为运行内存。昨天的工程使用标准库fsmc相应的函数接口来配置的FSMC,昨天工程的目的就是为了使其大家熟悉参数信息。因此...
前言 今天总结“STM32F103 外部NorFlash存储程序代码”。今天提供的实例工程是存储程序代码到外部NorFlash,并执行外部NorFlash的代码(既然存储了程序代码,那么肯定也会运行NorFlash的程序)。对于储存在外部NorFlash的程序可以通过多种途径,今天主要使用MDK-ARM工具下载程序到外部NorFlash,但是需要“编程算法”,但这些算法官方都已经写好了的,我们只需要配置一下,直接使用就是了。 NOR FLASH是很常见的一种存储芯片,掉电不会丢失数据。 NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行。这点和NAND FLASH不...
前言STM32F1系列芯片算是在STM32中最早的一系列,在实际生活中应用的比较广泛。因此,汇总一下STM32F1系列芯片常见片内资源,每一篇文章把重点提出来讲解,并提供软件源代码工程。汇总常见资源:基本IO、定时器TIM、串口USART、ADC模数转换、DAC数模转换、SPI串行通信、EXIT外部中断、BKP备份数据、RTC闹钟SysTick系统滴答、WDG看门狗(独立+窗口)、DMA传输数据、片内FLASH编程、FSMC读写外部SRAM、外部NorFlash操作等。各个细节详情请查看下面文章的讲解,这里将所有源代码工程打包,下载地址(360云盘):https://yunpan.cn/cSBaUas4Ntcq4 访问...
前言MDK-ARM意思就是基于ARM的微控制器开发工具(Microcontroller Developer Kit),由Keil公司开发,MDK-ARM包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件。具有业行领先的ARM C/C++编译工具链,完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件,包含世界上品牌的芯片。比如:ST、Atmel、Freescale、NXP、TI等众多大公司微控制器芯片。 本着免费分享的原则,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。关注微信公众号“EmbeddDeveloper”还有更多精彩内容等着你。 下载MDK-ARM集成开发工具和支持包,可以...
前言由于ST公司推出比STM32F1性价比更高的F0芯片,现在市面上F0芯片的占有率也非常高。F0芯片属于M0内核,主频48M(当然,可以超频的,但尽量不要超的太多),资源大小可根据项目需求来选型。因此,最近几天总结一下关于STM32F0开发相关的知识。该文章主要以STM32F0、MDK-ARM来讲解“新建软件工程详细过程”。关于MDK-ARM的下载与安装请看我的另一篇文章“MDK-ARM下载与安装”,里面详细讲述的下载和安装的过程。ST芯片有很好的兼容性(软件和硬件),同一个软件工程或许适用于多个不同芯片,硬件也是一样。关于新建工程其实还有一种ST官方的方法,就...
前言对于初学STM32的人来说,很多基础的知识没有掌握,这些基础知识就成为阻挡他们入门的门槛。因此,今天也把基础的知识分享出来,带领那些还没有迈过这个门槛的人入门。今天总结“GPIO配置详细”,以F0标准外设库初始化结构体来重点讲解。接着昨天“新建软件工程详细过程”来进行讲解,今天分两大部分内容总结。工程描述、IO配置源代码详细讲解。 本着免费分享的原则,如果你觉得分享内容对你有用,请关注微信公众号“EmbeddDeveloper”还有更多精彩内容等着你。 下载ST标准外设库和参考手册、数据手册等都可以在ST官网下载的到(请自行下载)。...
前言串口对于处理器来说算是一种标配,也是在软件开发中必不可少的,那就是使用串口来调试信息(打印出相应的信息)。STM32F0系列的芯片,串口根据型号不同,数量也不同,从1个到8个不等。今天主要总结串口简单且常用的功能,发送字符和中断接收字符。今天提供的串口发送功能将在后面的各个模块总结中都需要使用到,主要用于验证和测试各项功能的正确性。 本着免费分享的原则,如果你觉得分享内容对你有用,请关注微信公众号“EmbeddDeveloper”还有更多精彩内容等着你。 下载ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我...
前言关于定时器大家都应该不会陌生,因为处理器都有这个功能。今天总结的F0系列芯片的定时器根据芯片型号不同,数量也不同。定时器分类:基本定时器、通用定时器和高级定时器。计数位数也有不同,有16位的,有32位的。当然,有的芯片功能强大一点,上面功能都有。有的功能很简单,32位,基本定时器这些都没有。所以,根据自己项目需求原则合适型号的芯片很重要。今天总结的工程是“TIM基础延时”,也就是基本定时器TIM6的延时功能,主要是针对基本定时器来总结。这里有点需要注意的就是F0系列的芯片有些小容量(FLASH)的芯片没有TIM6基本定时器(如:F03...
前言关于DMA(Direct Memory Access)的功能,前面关注我微信的人应该知道,其实我已经在F1芯片上简单讲了一下。有网友要求在F0讲解一下使用DMA收发串口数据。今天就应网友要求总结一下在F0芯片上,使用DMA方式传输(收发)USART数据的功能。在多种芯片上(F0、F1、F2、F3、F4)了解过DMA模块功能的朋友可能会发现一个特点,就是DMA的功能有很多相似的地方,甚至是一样。其实,每一个模块在不同系列芯片(甚至不同厂商)基本上是大同小异,这就是所谓的触类旁通。对于软件开发也是一样的,当你学会某一项语言的开发,接触其他语言的开发就很容易了。...
前言关于ADC这一块的功能基本上也算是CortexM芯片的标配了。ST的每一块芯片都有这个功能,只是说因型号不同,通道数、位数等有所不同。STM8的芯片大多数都是10的,也就是说分辨率可达到:参考电压*(1/1024);STM32大多数都是12位的,也有少部分是16位的(F373)。平常采集一般的电压值,10位数都够我们使用了,除非使用在非常精密,或者说要求比较高的场合。F0系列的芯片和F1系列的芯片差不多相似,但是F0没有ADC2、ADC3这么一说,只有ADC1,这里在编程的时候(特别是想把代码从F1移植到F0上的人要注意)。 本着免费分享的原则,如果你觉得分享内...
前言关于STM32的定时器,可谓是功能强大,估计没有多少人研究完STM32定时器的所有功能(包括我也没有),只是使用常用的一些功能,后续我会推出关于STM32定时器的更多功能。STM32芯片多数为16位计数,但基本上都有1个或两个32位的定时器,可惜的是我们最常使用的F1系列芯片中没有32位的定时器,F030中也没有,具体请看数据手册。今天主要总结关于STM32F0系列输入捕获,捕获信号频率,即所谓逻辑分析仪检测数字频率的功能。今天使用32位的TIM2作为捕获的定时器,为什么是32位,原因很简单,就是为了捕获(采集)更宽频率的波形,今天提供的工程可以采...