STM8S_005_ADC采集单通道电压

ADC更多强大的功能后续呈现写在前面Ⅰ和前面51系列的芯片相比,STM8S芯片的优势之一在于外设资源要丰富且功能要强大的多。因此,本文讲述STM8S的一项比较实用的功能:ADC采集电压。在物联网的产品中,大多数传感器都使用了模数转换(ADC)这一功能。本文提供STM8两种转换模式:Ø 单次软件触发Ø 连续转换本文将结合“STM8S参考手...
📅 2023-07-10 阅读全文 →

实用的排序算法 - 交换排序

写在前面Ⅰ前面写了关于ADC采集电压的文章,大家除了求平均的方式来处理采样值,还有没有使用到其他的方式来处理采集值呢?在某些情况下就需要对一组数据进行排序,并提取头特定的数据出来使用。排序的应用场合很多,我这里就不再一一举例说明,掌握排序的基本算法,到时候遇到就有用武之地。排序算法分类Ⅱ1.按存储分类:内部排序和外部排序内部排序:是数据记录在内存中进行排序...
📅 2023-07-10 阅读全文 →

STM8S_006_AWU自动唤醒

AWU是STM32中没有的功能写在前面Ⅰ在某些低功耗的设备中,需要设备进入低功耗,且又需要间隔一定时间唤醒MCU,就需要有这么一个定时“AWU自动唤醒”的功能。在STM32中实现上面功能,常见的操作就是使用RTC来实现。但RTC每次进入低功耗之前都需要配置一下RTC,而STM8独特的AWU功能只需要简单的初始化配置即可。为方便大家阅读,本文内容已经整理成P...
📅 2023-07-10 阅读全文 →

IAR中eww、ewp、ewd···等各文件的含义和用途

IAR工程中的源代码.c.h文件只有几M大小,为什么打包之后会有几百M大小?答案:工程中包含了.o、.pbi等不必要的文件。看见下图,你可以删除不必要的文件吗?Ⅰ看过我代码的人,或许都会发现在同工程文件目录下面有一个.bat文件“双击删除“编译产生文件”.bat”,这个文件的作用就是删除一些编译过程中产生的文件,这些文件是可以删除,而对工程不会产生影响的文...
📅 2023-07-10 阅读全文 →

STM8S_007_片内FLASH和EEPROM编程

后面更新外部FLASH(W25Q16)和EEPROM(AT24C08)相关的文章写在前面Ⅰ我们都知道FLASH和EEPROM这两种存储器,但是大部分人了解的都是专门的FLASH和EEPROM芯片,如:W25Q16和ATAT24C08(外部)储存芯片。外部存储芯片和本文说的内部FLASH和EEPROM最大的区别就是在于:内部FLASH和EEPROM是不需要S...
📅 2023-07-10 阅读全文 →

如何解决IAR不能设置断点的问题

Ⅰ写在前面有网友问:我在使用IAR在线调试过程中不能打断点,但在编辑的时候可以打断点,一点击调试按钮之后,所打的断点就失效了······类似的问题:在先调试过程中,在反汇编的窗口中可以设置断点,在C编译区不能设置断点。查看断点的方法:菜单view->breakpoints 就会在窗口显示所有断点信息。通常出现这类现象是因为你要加断点的位置并没有程序(...
📅 2023-07-10 阅读全文 →

CM3(STM32)内核复位与系统复位区别及应用

Ⅰ写在前面某些系统允许复位,但对外设又有特殊要求:某一个IO状态不能因为复位而改变,某一个定时器计数器不能改变等。例子:我一个A系统通过一个IO控制另一个B系统的电源,而这个IO置高时才开启B系统的电源。正常工作过程中,B系统只有收到A系统关机命令任务才会进行关机(也就是说不能掉电关机),而A系统在工作过程中有复位的需求。这个时候如果我使用常规的引脚复位,...
📅 2023-07-10 阅读全文 →

ANSIC几种特殊的标准定义(__FILE__、__LINE__、__STDC__···)

Ⅰ写在前面为方便大家阅读,本文内容已经整理成PDF文件:http://pan.baidu.com/s/1gfHygyn对于我们大部分使用单片机进行裸机开发的朋友来说,可能很少有人在程序中许多关键的地方打印一些关键信息。有较大系统开发,或复杂系统开发经验的朋友一般都会在程序中输出很多调试信息,如在UCOS、freeRTOS、Linux等系统开发调试时打印许多...
📅 2023-07-10 阅读全文 →

可变参数的宏__VA_ARGS__的用法

回顾在【ANSIC几种特殊的标准定义】中我们讲述了比较常用的几项:__FILE__:正在编译文件的路径及文件名__LINE__:正在编译文件的行号__DATE__:编译时刻的日期字符串 如“Jun 17 2017”__TIME__:编译时刻的时间字符串  如”10:00:00“代码:char BuildFile[] = __FILE__;int&...
📅 2023-07-10 阅读全文 →

STM8S_008_WDG独立看门狗和窗口看门狗

Ⅰ写在前面STM8S看门狗WDG分为两类:IWDG:Independent WatchDog独立看门狗WWDG:Window WatchDog窗口看门狗独立看门狗模块可以用于解决处理器因为硬件或软件的故障所发生的错误。它由一个内部的128kHz的LSI阻容振荡器作为时钟源驱动,因此即使是主时钟失效时它仍然照常工作。窗口看门狗用于监测由于外部干扰或不可预知的...
📅 2023-07-10 阅读全文 →

STM8S_009_EXTI外部中断

有人问我使用EXIT唤醒芯片,没什么没有触发中断,芯片却唤醒了?Ⅰ写在前面使用STM8S开发过上面类似功能的朋友应该会知道,STM8S的稳定性不如STM32,特别是在低功耗时,使用EXTI外部中断唤醒,很容易受到干扰信号而唤醒。因此,这种情况需在硬件电路上多加考虑抗干扰的电路。其次,就是注意软件的上下拉配置,如果外部加了上拉或下拉电阻,不建议再配置成上拉或...
📅 2023-07-10 阅读全文 →

更加深入理解I2C总线、协议及应用

他们说【虹涛犹珷,天道酬勤!】说:望大神后面能出下IIC和SPI的使用,我是看了你的教程入门STM8的。【Was】说:您好,从发现这个公众号,我一直在看您的文章学习,现在在学iic通信,对如何确定一个陌生芯片的从机地址不理解,比如我现在用的UM220。请赐教!拜托了。既然你们想了解关于I2C的知识,我就成全你们,让你们慢慢地了解I2C。因前面是写关于STM...
📅 2023-07-10 阅读全文 →

周五了,为什么大部分程序猿都高兴不起来···

周六要加班周六要加班周六要加班对,你没看错就是周六要加班你们周六要加班吗?此刻···要加班的人心里涌现出一万只“草泥马”而···不加班的人心里暗喜“老子明天不上班”加班是常见的程序猿在周六加班算是很常见的,华为、腾讯、阿里这种大公司加班更是家常便饭。如果你有在周六加班,也不要觉得难过,因为陪你加班的人有太多了。不加班是幸运的如果你已经工作了,周六不加班,那...
📅 2023-07-10 阅读全文 →

STM8S_010_I2C读写EEPROM(硬件方式)

周末需要休息,也需要做事,像我这种,周末也不忘写文章分享给你们。目的很简单,就是让你们不休息。开玩笑啦像我这种人还是希望你们多学点知识正所谓学到老,活到老Ⅰ写在前面相信看过前面那篇文章“更加深入理解 I2C总线、协议及应用”的人,对I2C都有一定的了解了。那篇文章是针对I2C使用单片机IO模拟I2C方式实现读写操作。本文将讲述硬件I2C读写操作,也就是由处...
📅 2023-07-10 阅读全文 →

程序猿看到什么文章容易激动

你确定是来相亲的?报上三围、年龄来哦,错了,你是男程序猿有车有房吗?你的技术过硬吗?我的技术···技术不过硬,还想来相亲,博主上一篇分享的技术文章你肯定没看;没看文章就想来相亲,赶紧去看了,掌握了技术再来相亲吧。 赶紧戳开,看文章去。STM8S_010_I2C读写EEPROM(硬件方式)如果你看了上一篇分享的技术文章,你的技术都还不够硬。那么,推荐你去底部...
📅 2023-07-10 阅读全文 →

体验最新的IDE

大家在使用集成开发工具IDE时,总觉得有些地方自己不习惯。最近IAR和Keil这俩工具都有一定程度的更新。下面由我来给大家讲讲都更新了些什么内容。ⅠMDK-ARM参看我之前分享的文章【Keil(MDK-ARM)介绍、下载、安装与注册】,可以到官网或网盘下载最新的软件安装包。早在一个多月前,MDK-ARM V5.24就有预览版本推出。就在这6月30日推出了正...
📅 2023-07-10 阅读全文 →

有一种修饰符能使变量在处理器复位而不被初始化

先了解一下修饰符知识修饰符是用于限定类型以及类型成员申明的一种符号。如C语言中常见的修饰符:1.static静态修饰符:修饰变量,函数。作用域:变量仅仅在本文件可见,函数在本文件可以被调用;2.extern声明修饰符:修饰变量,函数。修饰变量时候,变量的声明在外面;3.const常量修饰符:修饰变量,函数。修饰变量时候,不能被重复赋值,只能放在只读段中;4...
📅 2023-07-10 阅读全文 →

老司机带你深入理解ST库中的assert_param语句

还有没上车的吗马上要开车了不等了,开始发车老司机,再稍我一个车已经发动了你等下一班车吧车子运行中,大伙儿坐稳啦!Ⅰ库函数中的assert_param在STM8、STM32标准外设库,或者HAL库的stm8_conf.h、stm32···_conf.h文件中会看见如下一段代码:/* #define USE_FULL_ASSERT 1 */#ifdef &nb...
📅 2023-07-10 阅读全文 →

STM32的ADC1采集多条通道,可以不使用DMA功能吗?

类似的问题为什么我采集5条通道的电压,而采集到的值却都是第一条的呢?我什么时候需要使用DMA功能?Ⅰ关于ADC的一些知识STM32的ADC是一种12位逐次逼近型的模拟数字转换器。它有多达18条通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。 ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器ADC_DR中...
📅 2023-07-10 阅读全文 →

STM32F1的ADC2如何使用DMA功能,USART过载错误Overrun error

关于标题第一个问题来自看了上一篇文章的读者。我个人觉得这是一个很好的问题,就是看到一个问题,可以联想衍生出来的问题。可能懂了的人觉得很简单,但对于学习不久或者刚初学的人而言,这样能促进他很快的成长。第二个USART过载错误算是分享一点经验吧。ⅠADC2如何使用DMA功能上一篇文章说了关于ADC使用DMA的功能,单ADC(只使用ADC1,或者只使用ADC2)...
📅 2023-07-10 阅读全文 →

一篇属于使用Keil朋友的专属文章

Keil综合(02)_工程窗口各项图标描述为方便大家阅读,本文内容已经整理成PDF文件:http://pan.baidu.com/s/1qYz1u7EⅠ写在前面很多朋友看到如下工程窗口里面的图标(如:带有“钥匙”标记,带有“*号”标记,带有“禁止驶入”标志),就会产生疑问:这到底是啥意思呢?其实,它的标记不一样,我们肯定能想到它具有不同的含义。工程窗口中的...
📅 2023-07-10 阅读全文 →

实在太热,直接脱掉衣服来编程

你们看见封面第一眼想到的是什么?-- 博主公司的女同事 ---- 这家公司真牛B ---- 天气真的有这么热吗 ---- 心情特别激动 --···不管你们是心情激动还是···反正我这几天是热的不行了···据说解决热的办法有很多种:第一:查看自己银行卡,心就会泼凉泼凉地;第二:进入冷宫就会冷;第三:进入冰箱。真的有进入冰箱的吗?呼叫一下呢冰箱里面有人吗?··...
📅 2023-07-10 阅读全文 →

关于库引生出来的话题

本篇技术文章的内容在前面已经分享过,写本文的主要目的在于想在这里告诉各位关注我的人:我分享过的内容,如果你没有看,回头你又来问我这类问题,我基本上不会回答。请大家换位思考,体谅一下哦!有种情况我可以理解,就是:你问我的问题,在你关注我之前我分享了此类文章,这种情况我可以理解,我也会尽量回答!假如:你2016-08-10关注了我,而我在2017-02-10分...
📅 2023-07-10 阅读全文 →

关于IDE版本不兼容的问题

本文内容来自一位网友问的问题:我的iar工程打不开是版本不兼容的问题,如何解决?遇到类似问题,或许你们会看到如下面一些现象关于IAR版本兼容问题关于MDK-ARM版本兼容问题遇到类似上面问题,不用紧张,一般都有解决办法。大部分集成开发环境IDE一般都遵循向下兼容规则,也就是说:高版本的IDE可以打开低版本的软件工程。如我有一个之前用EWARM V7.3建立...
📅 2023-07-10 阅读全文 →

IAR分析内存重要的神器 - map文件全解析

“ 对于使用RTOS进行项目开发的朋友可能会有这样的疑惑,我创建的任务到底需要多大的堆栈空间才够呢?其实,除了使用RTOS开发,就是使用裸机进行开发的朋友同样也会遇到类似的问题,有些地方需要很大的堆栈,对系统堆栈的分配就有必要知道其大小,如果分配不充分,很有可能导致内存溢出。之前就有小伙伴问:我的代码经常运行到“HardFault_Handler”、 “M...
📅 2023-07-10 阅读全文 →

MDK-ARM中map文件全解析

相信有较大项目开发经验的朋友都曾遇到内存溢出的问题,那么大家都是如何分析这类问题的呢?上一篇文章讲述了【关于IAR中map文件的详细讲述】,讲述了如何分析及掌握IAR中map文件的内容。本文也同样,针对MDK-ARM来讲述其中的map文件内容。输出map配置首先讲述一下关于map在MDK-ARM中的配置。其实,在MDK-ARM中,我们可以根据自己的情况(不...
📅 2023-07-10 阅读全文 →

我出书了

“ 大家看到标题“我出书了”,可能会感觉到惊讶。难道作者真的出书了?答案是:我出(PDF版本)电子书了。关于文章的标题,可能是一个吐槽点,如果要吐槽,请看完文章再吐哦!前面一些文章有读者反映公号里面阅读体验不是很好。确实,我也承认技术相关文章在微信上面的阅读体验不是很好。但微信有个好处,使用频率高,文章随时随地都可以查看。因此,我有答应,抽空会将有些重要的...
📅 2023-07-10 阅读全文 →

一篇很简单,有必要了解的文章 - STM32复位来源(寄存器版)

“最近项目遇到了一个问题:一个子系统,具有IAP升级的功能,Bootloader位于0x08000000,也就是说系统在运行过程允许复位。但是,该子系统需要在上电的过程中处理某项任务(而且只需要上电的那一次)。问题来了:我们如何判断系统是第一次上电复位?解决的办法有很多种,但是最简单的办法就是获取系统复位来源,详情请看文章。其实,这篇文章的内容也能回答之前...
📅 2023-07-10 阅读全文 →

关于函数体内局部变量定义的位置

前面有小伙伴问了这样一个问题:我将EWIAR中的一个函数拷贝到MDK-ARM中之后,发现编译出错了。为什么在EWARM中可以编译通过,但在MDK-ARM中会出错呢?我一看代码,基本上判断问题大概出在什么位置。经过进一步分析得出错误原因:就是函数里面局部变量定义的位置不对导致的错误。针对上面的问题,这个问题大家可能在实际项目中不常见,但牵涉的知识也有必要向大...
📅 2023-07-10 阅读全文 →

FreeRTOS_001_准备工作

Ⅰ开篇闲谈在开始学习FreeRTOS之前,先给大家闲聊一些话题。当然,肯定还是与文章有一定关系的。1.什么是FreeRTOS?考虑到关注我的读者中有许多是初学者,这里简述一下FreeRTOS。简单的来说FreeRTOS就是一种实时操作系统。RTOS:Real Time Operating System实时操作系统。FreeRTOS从字面可以将它拆分为Fre...
📅 2023-07-10 阅读全文 →