有趣的角度看技术
文章平均质量分 83
IoT-jie
学习嵌入式就是一个从入坑到入土的过程
展开
-
卡塔尔世界杯:带“芯片”的智能足球亮相!背后藏着哪些技术原理?
2022年卡塔尔世界杯比赛用球命名为“旅程”(阿拉伯语:AL RIHLA)。为何称其为“最快速”的足球,原因是它与往届世界杯用球相比重量更轻,可以在空中保持更快的飞行速度。这样的好处在于,一方面能够让足球飞得更快,守门员难以防守情况下,进球率能够得到提升,也可以大幅提高比赛的观赏性。原创 2022-11-28 10:06:56 · 2270 阅读 · 1 评论 -
printf()是如何与UART外设驱动函数“勾搭”起来的?
今天给大家分享的是。在嵌入式世界里,输出打印信息是一种非常常用的辅助调试手段,借助打印信息,我们可以比较容易地定位和分析程序问题。在嵌入式应用设计里实现打印信息输出的方式有很多,本系列将以 IAR 环境为例逐一介绍 ARM Cortex-M 内核 MCU 下打印信息输出方法。本篇是第一篇,我们先介绍最常见的输出打印信息方式,即利用 MCU 芯片内的硬件 UART 外设。转载 2022-10-11 15:21:03 · 578 阅读 · 0 评论 -
C语言从1打印到100再打印到1,该如何编写?
这个是一个知乎留言提到的,很多人也对这个有疑惑转载 2022-10-11 14:47:03 · 926 阅读 · 0 评论 -
单片机跑操作系统的几种选择
单片机跑操作系统的几种选择转载 2022-09-22 11:18:17 · 1633 阅读 · 0 评论 -
手把手教你搭建一个轻量级电子实验室
最近有不少朋友问道,搭建一个电子实验室是不是要很多钱?其实如果只是业余爱好的话,搭建一个轻量级的实验室,费用不是很贵,咱们普通人也是可以尝试的。. 下面具体分类说一下都需要准备哪些设备:仪器类:首先是电源,首选双路可调稳压电源,一般几百块钱就能拿下,能符合大部分的板机设计要求;万用表必不可少,福禄克,胜利牌的就行,一般几十块或几百不等;示波器是工程师必备神器,泰克,选个普源RIGOL其实就够用了,预算充足可以买好点,预算紧张的话,其实1000多也能拿下普源了,一般调试其实也够用的。焊接工具:焊台必不可少,0转载 2022-07-11 10:24:08 · 537 阅读 · 0 评论 -
串口丢数据的几个常见原因
串口是工程师最常用的串行外设之一,但在实际应用中,还是会经常遇到各种问题,比如丢失一字节数据。今天,我们就结合STM32来讲讲UART相关内容,以及容易丢失一字节数据的问题。这里重点说一下UART状态寄存器中的几个标志位:TXE、 TC、 RXNE、 ORE。 这几个标志位在编程中经常使用,直接用函数库的同学可能没有关心过这几个标志位,数据丢失有可能就是对它们操作不当而导致出错。TXE:发送数据寄存器为空 (Transmit data register empty)0:数据未传输到移位寄存器1:数据传输到原创 2022-07-11 10:13:39 · 3119 阅读 · 0 评论 -
手把手教你写链表,小学生看了都说好~
摘要:明明我们在之前已经接触了数组,感到数组已经是万能的数据存储位置了。但是,如果我们一直在使用比较复杂的数据(也就是比较多的数据时),肯定会感到很反感。因为对于数组这种数据结构,在你自己使用之前,一定要对其大小进行一番定义。这样一来,它的存储空间在数据处理过程中便显得极为不方便。因为谁也不想对将要处理的数据做一个空间的预算,这几乎是所有程序员都很忌讳的,并且还要让其空间足够大,这样才能满足我们的要求(但如果分配的太多,难免会浪费内存)。 所以,这就是为啥你要用链表、学链表。链表是一种数据结构,它弥补了数组转载 2022-07-11 10:08:52 · 768 阅读 · 0 评论 -
C语言 / C++基础面试知识大集合
相对而言,C语言和C++相关的面试题比较少见,没有Java方向写的人那么多,这是一篇 C 语言与 C++面试知识点总结的文章,个人感觉非常难得,希望能对大家有所帮助。const作用 修饰变量,说明该变量不可以被改变; 修饰指针,分为指向常量的指针(pointer to const)和自身是常量的指针(常量指针,const pointer); 修饰引用,指向常量的引用(reference to const),用于形参类型,即避免了拷贝,又避免了函数对值的修改;原创 2022-05-31 10:36:21 · 858 阅读 · 0 评论 -
手把手教你写出令人窒息的烂代码
在 GitHub 上有一个项目,它描述了「最佳垃圾代码」的十九条关键准则。从变量命名到注释编写,这些准则将指导你写出最亮眼的烂代码。为了保持与原 GitHub 项目一致的风格,下文没有进行转换。读者们可以以相反的角度来理解所有观点,这样就能完美避免写出垃圾代码。项目地址:https://github.com/trekhleb/state-of-the-art-shitcode当然,以下十九条垃圾代码书写准则并没有面面俱到,如果读者们发现有一些难以忍受的烂代码习惯,也可以发表你的看法。💩转载 2022-05-31 09:44:12 · 226 阅读 · 0 评论 -
如何获取单片机程序的运行时间?
单片机编程者需要知道自己的程序需要花费多长时间、while周期是多少、delay延时是否真如函数功能描述那样精确延时。测试代码的运行时间的两种方法1.使用单片机内部定时器在待测程序段的开始启动定时器,在待测程序段的结尾关闭定时器。为了测量的准确性,要进行多次测量,并进行平均取值。2.借助示波器的方法在待测程序段的开始阶段使单片机的一个GPIO输出高电平,在待测程序段的结尾阶段再令这个GPIO输出低电平。用示波器通过检查高电平的时间长度,就知道了这段代码的运行时间。显然,借助于示波器的原创 2022-05-31 09:21:59 · 646 阅读 · 0 评论 -
C语言中的关键字应用技巧(volatile、const、struct/union、_ _预定义_ _、#/##、void/void*、weak)
嵌入式C开发关键字的应用技巧1、volatilevolatile修饰表示变量是易变的,编译器中的优化器在用到这个变量时必须每次都小心地从内存中重新读取这个变量的值,而不是使用保存在寄存器里的备份,有效的防止编译器自动优化,从而与软件设计相符合。中断服务与主程序共享变量://volatile uint8_t flag=1;uint8_t flag=1;void test(void){ while(flag) { //do something }原创 2022-05-30 14:23:45 · 567 阅读 · 1 评论 -
PCB Layout的10个细节
PCB layout板子需要注意的点!转载 2022-02-24 10:29:38 · 728 阅读 · 0 评论 -
固件、驱动、软件的区别
不管我们使用什么操作系统,无论是 Windows、macOS,还是 Linux ,里面都安装了许多软件、驱动程序和固件。但是,这三者概念有什么区别?【转载微信公众号:良许Linux 这是一位励志的大神,转行自学IT进入大厂,至少是我的偶像】文字描述太抽象了,我们直接来看漫画吧!好了,看完漫画,我们再来看正规的解释是怎样的。简单来讲,固件、驱动程序和软件之间的根本区别在于它们的设计目的。1. 固件固件(Firmware)就是写入 ROM (只读存储器)中的程序,固件担任着一个系统最基转载 2022-02-22 14:11:10 · 1009 阅读 · 1 评论 -
数据类型、变量、堆、栈、静态、常量
1、数据类型本质分析1.1 数据类型的概念●“类型”是对数据的抽象●类型相同的数据有相同的表示形式、存储格式以及相关的操作●程序中使用的所有数据都必定属于某一种数据类型1.2 数据类型的本质●数据类型可理解为创建变量的模具:是固定内存大小的别名。●数据类型的作用:编译器预算对象(变量)分配的内存空间大小。●注意:数据类型只是模具,编译器并没有分配空间,只有根据类型(模具)创建变量(实物),编译器才会分配空间。2、变量的本质分析2.1 变量的概念概念:既能读又能写的转载 2022-03-16 13:50:48 · 298 阅读 · 0 评论 -
3年的MCU工程师就写出这样的代码?
今天分享的文章,主要给那些没有软件设计思想的MCU软件工程师看的。随着目前MCU的各方面性能显著提升,一些以MCU为控制中心的嵌入式系统也是越来越复杂,毫无软件设计理念的代码真的是拖累单片机,所以对每个MCU软件工程师在软件设计等方面的要求也将越来越高。今天利用一个实际发生的例子,对入行的初级软件工程师提一些软件设计上的建议,并分享了一些经常走的弯路,希望可以帮到大家。这篇文章我没有谈编程的规范性的东西,如果你想让自己的程序文件代码更加直观、看起来美观、可读性强,推荐学习一下全面的编程规范,比如网络上转载 2022-02-22 14:23:04 · 111 阅读 · 0 评论 -
单片机工程师如何跨步到嵌入式Linux
嵌入式Linux转载 2022-02-24 10:56:24 · 601 阅读 · 0 评论