
嵌入式工程师笔记
文章平均质量分 82
IoT-jie
学习嵌入式就是一个从入坑到入土的过程
展开
-
条件编译#if、#elif、#ifdef的妙用
般情况下,C语言源程序中的每一行代码.都要参加编译。但有时候出于对程序代码优化的考虑,希望只对其中一部分内容进行编译,此时就需要在程序中加上条件,让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就是条件编译。相关的预编译指令如下:原创 2022-09-22 11:08:45 · 2349 阅读 · 0 评论 -
单片机三种烧录方式ICP、IAP和ISP
1)ICP使用SWD接口进行烧录程序。常用的烧录工具为J-Link、ST-Link、Nu-Link;与之配套的烧录软件为J-Flash、NuMicro_ICP_Programming_Tool、st-linkutility。(2)ISP是使用引导程序通过USB/UART等接口进行烧录的,首先就是需要有BoodLoad程序。最常见的烧录方式就是学习8051单片机时使用的STC-ISP烧录工具了。(3)IAP就是通过软件实现在线电擦除和编程的方法,没有使用任何工具,仅仅是通过软件的方法来更新Flash。...原创 2022-07-19 14:23:25 · 1686 阅读 · 0 评论 -
C语言 / C++基础面试知识大集合
相对而言,C语言和C++相关的面试题比较少见,没有Java方向写的人那么多,这是一篇 C 语言与 C++面试知识点总结的文章,个人感觉非常难得,希望能对大家有所帮助。const作用 修饰变量,说明该变量不可以被改变; 修饰指针,分为指向常量的指针(pointer to const)和自身是常量的指针(常量指针,const pointer); 修饰引用,指向常量的引用(reference to const),用于形参类型,即避免了拷贝,又避免了函数对值的修改;原创 2022-05-31 10:36:21 · 940 阅读 · 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 · 1003 阅读 · 1 评论 -
工程师笔记|常见的嵌入式软件工程师面试题
Q:什么是ISR?A:ISR 是指中断服务程序。 这些是存储在特定内存地址的函数,当发生某种类型的中断时会调用这些函数。 Cortex-M 处理器系列具有管理中断执行的 NVICQ:我们可以给ISP传递参数或从ISR返回一个值吗?为什么?A:ISR 不返回任何内容并且不允许传递任何参数。当硬件或软件中断发生时会调用 ISR,它不会被任何代码调用,所以这就是没有参数传递到 ISR 的原因。因为它不会被任何代码调用,所以它不会有返回值。Q:什么是 volatile 关键字?A:volatile转载 2022-01-05 17:18:34 · 5546 阅读 · 0 评论 -
工程师笔记 | 嵌入式工程师常用软件
今天分享一份嵌入式软件工具清单,希望能对大家有所帮助。1、BowPad我们常常需要一些轻量级的文本编辑器,用来编写少许代码或者看log等。BowPad就是一个超级好用的、小巧的文本编辑器。BowPad源码/安装包下载地址:https://github.com/stefankueng/BowPad2、keilkeil大家都熟悉,单片机开发IDE,我们学习单片机装的第一个软件应该就是keil吧~3、VSCodeVSCode(全称:Visual Studio Code.转载 2022-03-16 11:55:10 · 1903 阅读 · 0 评论 -
嵌入式C语言编码规范
首先,借助本文的原作者–正点原子团队的左忠凯大神的一句话来开始:之所以会写这份文档是要下定决心修改自己那写的跟一坨屎一样的垃圾代码规范!相信正在阅读本文档的读者出发点也是如此(可能你的代码规范还没有像一坨屎那么严重)第一章 规范说明因为作者工作内容的原因(做单片机开发板的),此前没有代码规范化的思维,变量,函数的命名随心所欲,大小写混用;代码注释“//”和“/* */”混用等等很多陋习,这样的陋习写出的例程供阅读者学习也会带坏人家哒,所以痛定思痛,一定要改掉这些陋习。在这个看脸的时代,优美的代码风格让转载 2022-02-11 17:02:30 · 661 阅读 · 0 评论 -
工程师笔记 | 结构体
1、结构体的申明与定义1.1申明结构体的声明使用struct关键字,如果我们想要把我们的学籍信息组织一下的话,可以这样表示:这样,我们就相当于描绘好了一个框架,以后要用的话直接定义一个这种类型的变量就好了。1.2定义我们刚刚申请了一个名叫Info的结构体类型,那么理论上我们可以像声明其他变量的操作一样,去声明我们的结构体操作,但是C语言中规定,声明结构体变量的时候,struct关键字是不可少的,也就是:struct 结构体类型名 结构体变量名不过,你可以在某个函数里面...转载 2022-03-04 16:13:20 · 586 阅读 · 0 评论 -
工程师笔记|在CMD窗口运行C语言
cmd窗口大家可能都比较熟悉,那如何在cmd窗口编译运行C语言程序呢?其实很简单的,只需要下载一个C/C++编译器,添加一下环境变量,之后就能在cmd窗口中编译运行C语言程序了,下面我简单介绍一下实现过程:下载C/C++编译器,这里可以下载MinGW,包含常见的gcc,g++等编译器,下载的话,直接到官网上下载就行,选择适合自己系统的版本:下载完成后,直接双击就能安装,安装后的目录文件如下,包括我们常用的gcc,g++,gdb等编译调试器,编译c语言程序的话,直接使用gcc就行,如下:为了在c转载 2022-01-05 11:48:59 · 6143 阅读 · 0 评论 -
工程师笔记|C语言的进阶使用
关于C语言的进阶使用,讲三点壹:#include"xxx.c"贰:void弎:逗号表达式壹 #include"xxx.c"1、操作一波咱们先体验一波#include"xxx.c"文件能不能用:参考demo: 1//FileName :main 2#include <stdio.h> 3#include <stdlib.h> 4 5/*************************** 6 * .c文件声明区域 7 **************转载 2022-01-05 11:34:42 · 904 阅读 · 0 评论 -
工程师笔记 | PCB板子的9个层
【工程师笔记】PCB板子这9个层分别是什么“妖魔鬼怪”?PCB板子中各个层的作用是什么?使用的时候需要注意什么?新手对PCB设计当中的各个层的认识不是很充分,不知其作用和用法,这里就给大家做一个系统的讲解...转载 2022-01-05 10:02:41 · 417 阅读 · 0 评论 -
工程师笔记|带有空片检测功能的STM32需注意的GPIO设计
引用公众号文章 STM32F0STM32单片机2021-12-25 08:30关键词:空片检测,Bootloader,GPIO引言从STM32F0部分型号开始,比如STM32F04x和STM32F09x,STM32越来越多的型号具有了空片检测(Empty Check)功能。以前,STM32的启动由BOOT0和BOOT1来决定,在引入了空片检测功能之后,则在BOOT0=0的情况下,还需要分两种情况:一是内部已经存在代码,则从用户存储区启动;二是如果是空片,则从系统存储区启动..转载 2022-01-05 09:34:33 · 616 阅读 · 0 评论