硬件工程师成长之路(6)——程序设计

系列文章目录

1.元件基础
2.电路设计
3.PCB设计
4.元件焊接
5.板子调试
6.程序设计
7.算法学习
8.编写exe
9.检测标准
10.项目举例
11.职业规划


文章目录

  • 前言
  • 如果发现有一天对自己写的程序非常清楚他出来是什么样子,那么恭喜你此小节入门了
  • 一、STM8开发
    • 1.1、IAR for ARM 安装与注册(超详细)
    • 1.2、IAR for STM8安装与注册(超详细)
    • 2.1、IAR for ARM的基本使用教程
    • 2.2、IAR for STM8的基本使用教程
    • 3、STM8学习笔记---点亮LED灯
    • 4、STM8单片机常见问题及解决方案
    • 5、关于iar for stm8: iar Fatal Error[Pe1696]: cannot open source file "xx.h"错误
    • 6、iar for stm8 报错Error[Li005]: no definition for "assert_failed"解决方案
    • 7、STM8进阶学习教程
    • 8、包含了头文件还有"Error[Li005]: no definition for"之类的错误原因
    • 9、关于STM8S中断优先级求助
    • 10、stm8 io口重映射
    • 11、STM8/IAR生成HEX、BIN 方法
    • 12、ST Visual Programmer批量烧写教程
    • 13、ST-LINK-Utility
    • 14、上电复位至执行mian函数这段时间芯片在做什么
    • 15、STM8S的9个复位源
  • 二、STM32开发
    • 1、keil(MDK) 5官方下载教程
    • 2、Keil(MDK) 5 软件安装教程
    • 3、(MDK5)安装STM32芯片包-pack文件安装方法
    • 4、为 Keil 更换 Sublime Text Molokai 主题
    • 5、Keil MDK的一些推荐功能(编码格式、自动保存、代码提示、动态语法检查、多核编译)
    • 6、STM32CubeMX安装教程_Windows
    • 7、STM32软件的烧写方式
    • 8、JLink接口的SWD接法
    • 9、STM32+cubeMX第一个工程,点亮LED
    • 10、STM32新手入门教程
    • 11、STM32进阶学习教程
    • 12、Keil5的仿真调试
    • 13、STM32程序移植专题
    • 14、STM32官方封装库下载方法
    • 15、第一次建项目之stm32cubemx 错误error: L6236E: No section matches selector - no section to be FIRST/LAST.
    • 16、STM32 之一 HAL库、标准外设库、LL库(STM32 Embedded Software)
    • 17、一文看懂GPIO口的八种工作原理
    • 18、NVIC中断优先级管理
    • 19、一个定时器,产生多路PWM
      • 1、高级定时器输出多路PWM波(芯片自带功能)
      • 2、通过n++计数实现
      • 3、定时器主从模式,精确输出PWM脉冲数量
    • 20、STM32使用ARM优化数学库arm_math.h函数库配置指南
    • 21、STM32Trust生成加密固件
  • 三、软件提升——FreeRTOS
    • 1、FreeRTOS系列第1篇---为什么选择FreeRTOS?
    • 2、FreeRTOS系列第2篇---FreeRTOS入门指南
    • 3、FreeRTOS系列第3篇---FreeRTOS移植指南
    • 4、FreeRTOS系列第4篇---FreeRTOS编码标准及风格指南
    • 5、FreeRTOS系列第5篇---FreeRTOS在Cortex-M3上的移植
    • 6、韦东山FreeRTOS系列教程
  • 四、FPGA开发
    • 1、FPGA入门指引
    • 2、FPGA入门教程
    • 3、开发环境——Quartus II 13.1的安装及使用
    • 4、仿真环境——Modelsim下载 安装 与 和谐教程
    • 5、器件库——添加cyclone V的器件库
    • 6、Verilog 教程
    • 7、触发器详解——(一)D触发器
    • 8、FPGA Verilog HDL 系列实例
    • 9、FPGA学习笔记(1)——点亮流水灯
  • 五、Linux开发
    • 1、入门嵌入式
    • 2、开发环境搭建
    • 3、系统学习资料
    • 4、其他学习资料
  • 六、传说中的C++
    • 1.学了C语言和C++都能做什么呢?
    • 2.从C到C++
    • 3.vs2019 开始自己的第一个C++程序
      • 一、新建项目
      • 二、代码演示
    • 4.简单案例:实现两个数相加,输出结果!
    • 5.简单案例:实现 1~100 所有数相加,输出结果!
  • 七、常用的函数
    • 1、中文版C89, C95, C99, C11, C17, C23标准(标准库)
    • 2、数组清空
    • 3、C语言中怎么将字符123转化成数字123
    • 4、C语言小工具
  • 八、硬件工程师 VS 软件工程师
  • 后记
    • 一、通信协议
      • 1、UART(串口)

前言


送给大学毕业后找不到奋斗方向的你(每周不定时更新)

【牛客网】构建从学习到职业的良性生态圈
中国计算机技术职业资格网
上海市工程系列计算机专业中级专业技术职务任职资格评审


如果发现有一天对自己写的程序非常清楚他出来是什么样子,那么恭喜你此小节入门了

国产51单片机

硬件工程师成长之路(6)——程序设计_第1张图片
51单片机我们在大学都学过,51也是我们一个嵌入式接触的第一个处理器,它的结构不算复杂。我们学习51单片机,我们可以清楚的说出51单片机中的资源,累加器A和B,程序状态寄存器,程序计数器,6个中断源,r0-r7工作寄存器等等,其实arm处理器也可以说是一个单片机,只不过它的速度更快,寄存器更多了些,位数多了些(32位),分了几种工作模式,指令多了些等等,不过只要我们有51的学习经验,学习arm并不是很困难的事情。

不过我们学习arm不能在像学习51单片机那样,希望把所有的东西都知道,弄清楚里面的结构,这个是不可能的,也是完全没有必要的。我们学习arm处理器要学习与应用相关的部分。官方给出的芯片手册是一个工具,而不是教材,我们没有哪个工程师能够把那个一千多页的文档从头到尾的看一遍,三星在写手册的时候也有偷工减料的地方,比如6410的有些部分就是直接拿2440的手册中的。我们用到哪一部分,我们再去查相应的部分就可以了。Arm芯片手册中关于芯片的结构和相关的使用说明说的很详细,以前写过关于裸机LED的小程序,那个小程序只是一个简单的GPIO的操作,不过对于刚入门的初学者来说,这个小程序能让我们大概的了解arm芯片。还有那个led的程序运行是有前提的,arm运行之前要先初始化,上次我们直接是在启动uboot启动后运行的我们的led程序,uboot把做了初始化的工作。

学习arm和学习51系列的基本内容相同,arm的基本内容主要包括中断响应过程,arm指令集,存储器结构和汇编语言的程序结构,并没有比51更多多的内容,从这几方面去学习arm,我们会发现学习arm并不是很困难的事。我们不要把arm想的太复杂,太神秘,就像我们没有接触单片机之前,我们并不知道什么是单片机,也不知道单片机能做什么,当我们学完之后,我们感觉其实也没什么难的。Arm也是一样的,我建议初学者买本关于arm入门的书,从头看一遍有个系统的掌握。我给大家推荐一本《从51到ARM—32位嵌入式系统入门》北京航空航天大学出版社出版的。这本书是我在大学的时候接触到的第一本arm的书,这本书讲的很基础,引领我们从51过渡到ARM,很多的地方都是讲51和ARM的对比,让我们看完之后,感觉arm就是一个“超级”的51。建议关于汇编的指令部分先可以不看,因为那个很长,也不好记,而且日后工作也不怎么用。只有我们在移植与CPU直接打交道的时候才用的着。

各种编程代码入门教程
硬件工程师成长之路(6)——程序设计_第2张图片

一、STM8开发

硬件工程师成长之路(6)——程序设计_第3张图片

博主推荐使用IAR for STM8

1.1、IAR for ARM 安装与注册(超详细)

IAR for ARM 安装与注册(超详细)
硬件工程师成长之路(6)——程序设计_第4张图片

1.2、IAR for STM8安装与注册(超详细)

IAR for STM8介绍、下载、安装与注册
硬件工程师成长之路(6)——程序设计_第5张图片
EWSTM8IAR安装包及注册机.ZIP
STLINK烧写软件.zip
STLINK驱动.zip

2.1、IAR for ARM的基本使用教程

IAR for STM8的基本使用教程

2.2、IAR for STM8的基本使用教程

IAR for STM8系列教程(一)新建软件工程详细过程

3、STM8学习笔记—点亮LED灯

STM8学习笔记—点亮LED灯

4、STM8单片机常见问题及解决方案

STM8单片机常见问题及解决方案

5、关于iar for stm8: iar Fatal Error[Pe1696]: cannot open source file "xx.h"错误

关于iar for stm8: iar Fatal Error[Pe1696]: cannot open source file "xx.h"错误

6、iar for stm8 报错Error[Li005]: no definition for "assert_failed"解决方案

iar for stm8 报错Error[Li005]: no definition for "assert_failed"解决方案

7、STM8进阶学习教程

STM8进阶学习教程

8、包含了头文件还有"Error[Li005]: no definition for"之类的错误原因

包含了头文件还有"Error[Li005]: no definition for"之类的错误原因

9、关于STM8S中断优先级求助

关于STM8S中断优先级求助

10、stm8 io口重映射

stm8 io口重映射
硬件工程师成长之路(6)——程序设计_第6张图片

硬件工程师成长之路(6)——程序设计_第7张图片

11、STM8/IAR生成HEX、BIN 方法

STM8/IAR生成HEX、BIN 方法

12、ST Visual Programmer批量烧写教程

STVP可以查看STM8芯片内部代码,数据,批量烧录STM8芯片;
ST-LINK-Utility可以查看STM32芯片内部代码,数据,批量烧录STM32芯片;
ST Visual Programmer批量烧写教程

13、ST-LINK-Utility

分享:STLINK仿真器软件ST-LINK-Utility适用于STM8,STM32单独下载软件
硬件工程师成长之路(6)——程序设计_第8张图片

14、上电复位至执行mian函数这段时间芯片在做什么

STM8单片机启动流程彻底探究–基于IAR开发环境

15、STM8S的9个复位源

硬件工程师成长之路(6)——程序设计_第9张图片
STM8 复位详解
STM8 复位(RST)寄存器
通过软件程序消除单片机由外界干扰产生的异常复位的影响(基于STM8S105单片机)

STM8单片机复位源判断

二、STM32开发

硬件工程师成长之路(6)——程序设计_第10张图片

1、keil(MDK) 5官方下载教程

方法一、keil(MDK) 5官方下载教程

方法二、点击MDK-ARM5.34,即可下载

方法三、MDK5.29,5.30,5.31,5.32,5.33, 5.34和各种pack软件包镜像下载(2021-03-26)

硬件工程师成长之路(6)——程序设计_第11张图片

2、Keil(MDK) 5 软件安装教程

Keil(MDK) 5 软件安装教程
(破解时KILE5和破解器都用管理员方式打开)

3、(MDK5)安装STM32芯片包-pack文件安装方法

方法一、(MDK5)安装STM32芯片包-pack文件安装方法

方法二、点击,找到对应的芯片包下载即可
硬件工程师成长之路(6)——程序设计_第12张图片

4、为 Keil 更换 Sublime Text Molokai 主题

为 Keil 更换 Sublime Text Molokai 主题

5、Keil MDK的一些推荐功能(编码格式、自动保存、代码提示、动态语法检查、多核编译)

Keil MDK的一些推荐功能(编码格式、自动保存、代码提示、动态语法检查、多核编译)

6、STM32CubeMX安装教程_Windows

方法一、STM32CubeMX安装教程_Windows

方法二、点击即可下载,非百度
硬件工程师成长之路(6)——程序设计_第13张图片

7、STM32软件的烧写方式

1、STM32软件的烧写方式

2、关于ST-Link下载STM32程序的使用

3、STM32笔记–使用ST-Link下载hex文件
硬件工程师成长之路(6)——程序设计_第14张图片

8、JLink接口的SWD接法

JLink接口的SWD接法
硬件工程师成长之路(6)——程序设计_第15张图片
ARM 仿真器种类与概念(JTAG、SWD、JLink、ULink、ST-Link)
JTAG、JLINK、ULINK、ST-LINK的联系和区别

9、STM32+cubeMX第一个工程,点亮LED

STM32+cubeMX第一个工程,点亮LED

10、STM32新手入门教程

STM32新手入门教程

11、STM32进阶学习教程

STM32进阶学习教程

12、Keil5的仿真调试

Keil5的仿真调试

13、STM32程序移植专题

STM32程序移植专题

14、STM32官方封装库下载方法

STM32官方封装库下载方法

15、第一次建项目之stm32cubemx 错误error: L6236E: No section matches selector - no section to be FIRST/LAST.

stm32cubemx 错误error: L6236E: No section matches selector - no section to be FIRST/LAST.

16、STM32 之一 HAL库、标准外设库、LL库(STM32 Embedded Software)

STM32 之一 HAL库、标准外设库、LL库(STM32 Embedded Software)

17、一文看懂GPIO口的八种工作原理

一文看懂GPIO口的八种工作原理


18、NVIC中断优先级管理

硬件工程师成长之路(6)——程序设计_第16张图片
硬件工程师成长之路(6)——程序设计_第17张图片
1、 高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。
2、 抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断 。
3、 抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。
4、 如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;

19、一个定时器,产生多路PWM

1、高级定时器输出多路PWM波(芯片自带功能)

STM32CUBEMX配置教程(五)高级定时器输出两路PWM波
硬件工程师成长之路(6)——程序设计_第18张图片

2、通过n++计数实现

一个定时器生成多路PWM波形的原理和方法成都自动化开发
硬件工程师成长之路(6)——程序设计_第19张图片

3、定时器主从模式,精确输出PWM脉冲数量

嵌入式STM32学习笔记(5)——定时器主从模式,精确输出PWM脉冲数量
硬件工程师成长之路(6)——程序设计_第20张图片

20、STM32使用ARM优化数学库arm_math.h函数库配置指南

STM32使用ARM优化数学库arm_math.h函数库配置指南

21、STM32Trust生成加密固件

手把手教你用STM32Trust生成加密固件
硬件工程师成长之路(6)——程序设计_第21张图片

硬件工程师成长之路(6)——程序设计_第22张图片

三、软件提升——FreeRTOS

1、FreeRTOS系列第1篇—为什么选择FreeRTOS?

FreeRTOS系列第1篇—为什么选择FreeRTOS?

2、FreeRTOS系列第2篇—FreeRTOS入门指南

FreeRTOS系列第2篇—FreeRTOS入门指南

3、FreeRTOS系列第3篇—FreeRTOS移植指南

FreeRTOS系列第3篇—FreeRTOS移植指南

4、FreeRTOS系列第4篇—FreeRTOS编码标准及风格指南

FreeRTOS系列第4篇—FreeRTOS编码标准及风格指南

5、FreeRTOS系列第5篇—FreeRTOS在Cortex-M3上的移植

FreeRTOS系列第5篇—FreeRTOS在Cortex-M3上的移植

6、韦东山FreeRTOS系列教程

韦东山freeRTOS系列教程:入门文档教程+进阶视频教程(全部免费的freeRTOS系列教程、freeRTOS学习路线)

四、FPGA开发

硬件工程师成长之路(6)——程序设计_第23张图片
首先强调一点,

初学FPGA不需要买开发板!但必须要会仿真调试!
初学FPGA不需要买开发板!但必须要会仿真调试!
初学FPGA不需要买开发板!但必须要会仿真调试!

1、FPGA入门指引

入行10年后,我总结了这份FPGA学习路线
FPGA入门指引
如何学习FPGA

2、FPGA入门教程

FPGA入门教程

3、开发环境——Quartus II 13.1的安装及使用

Quartus II 13.1的安装及使用

4、仿真环境——Modelsim下载 安装 与 和谐教程

Modelsim下载 安装 与 和谐教程

5、器件库——添加cyclone V的器件库

下载 Quartus II 13.1以及添加cyclone V的器件库

6、Verilog 教程

在学习本教程之前,你需要了解数字电路的一些基本信息。如果你对 C 语言有一定的了解,有助于 Verilog 的快速上手。

7、触发器详解——(一)D触发器

触发器详解——(一)D触发器

8、FPGA Verilog HDL 系列实例

【连载】 FPGA Verilog HDL 系列实例

9、FPGA学习笔记(1)——点亮流水灯

FPGA学习笔记(1)——点亮流水灯

C语言在大学基本上都教,所以就不讲了,直接从C++开始。

五、Linux开发

1、入门嵌入式

1、如何快速入门嵌入式?
2、嵌入式Linux入门:概述---------写的很好
3、韦东山: 作为一个初学者,怎样学习嵌入式Linux?

2、开发环境搭建

VMware 安装
硬件工程师成长之路(6)——程序设计_第24张图片
安装时上面的防护关上

3、系统学习资料

1、《嵌入式LINUX驱动大全》
硬件工程师成长之路(6)——程序设计_第25张图片

2、客观评价学习Linux正点原子、野火和韦东山系列那个更好一些?
硬件工程师成长之路(6)——程序设计_第26张图片

4、其他学习资料

1、飞凌嵌入式论坛
硬件工程师成长之路(6)——程序设计_第27张图片
2、C语言中文网
硬件工程师成长之路(6)——程序设计_第28张图片
3、系列文章
硬件工程师成长之路(6)——程序设计_第29张图片

六、传说中的C++

原文出处
1.首先需要去官网下载安装。

2.跳转到官网后,如下图所示,点击社区模块的免费下载,之后应该会自动下载安装工具,如果没有自动下载,可以根据提示手动操作。
硬件工程师成长之路(6)——程序设计_第30张图片
3.从浏览器的下载位置中找到下载好的安装工具,如下图所示,双击运行安装。
硬件工程师成长之路(6)——程序设计_第31张图片
4.等待其下载必要的文件,如下图所示。

硬件工程师成长之路(6)——程序设计_第32张图片
5.下载完成之后会自动安装,安装完毕后会出现如下图所示的界面。
硬件工程师成长之路(6)——程序设计_第33张图片
6.因为我们现在只用来写C语言程序,因此在工作负载中只勾选“使用C++的桌面开发”这一项就可以了,如下图所示。
硬件工程师成长之路(6)——程序设计_第34张图片
7.点击安装位置,设置Visual Studio IDE和下载缓存的位置,如果自己的电脑有多个盘符,不建议安装到C盘,我是安装到了E盘,如下图所示。(在E盘下新建文件夹VS2019)

硬件工程师成长之路(6)——程序设计_第35张图片
8.点击右下角的安装,就开始下载VS2019了,它会边下载边安装,此过程视自己的网速情况,可能会花费较长时间。如下图所示
硬件工程师成长之路(6)——程序设计_第36张图片
9.安装完成之后会提示重启计算机,保存好当前的工作,点击重启按钮即可,如下图所示。
硬件工程师成长之路(6)——程序设计_第37张图片
10.重启后,再把下图所标拉到桌面,快捷方式就弄好了。
硬件工程师成长之路(6)——程序设计_第38张图片
11.桌面快捷方式左下角有箭头怎么去除呢,请参照下文链接
Win10怎么去除桌面快捷方式图标左下角的小箭头
硬件工程师成长之路(6)——程序设计_第39张图片

原文出处

1.学了C语言和C++都能做什么呢?

C语言:操作系统底层、系统驱动、单片机、嵌入式方面 等等;
C++:网络游戏开发、音视频技术、Socket网络通信,另外,苹果/谷歌/微软 等大型软硬件公司的系统或者软件上面都支持C/C++语言的集成开发。

你常用的软件大多数都是C++写的,例如:Office软件:MS Office,WPS Office,OpenOffice/LibreOffice,你所用的Windows也用了大量的C++,你说你在用C#和SQL,那我告诉你你用的 VS IDE 核心部分是C++写的,你用的C#,C# 的.Net执行框架也是C++写的,你用的Sql数据库,是Sql Server吧?很不幸,Sql Server也是cpp写的、你上网页在用浏览器吗?很不幸,浏览器内核都是C++写的,界面大多数浏览器界面也是C++写的,你聊天用的 QQ、YY、Skype 等也是C++写的。这些都是你绝对有在用的,至于其他,还有很多,杀毒软件、PhotoShop、Maya,N多行业软件,几乎所有的端游 等等,都是C++写的。你问我C++能做什么实际的东西,我告诉你什么也做不了,你信吗?哈哈

C++ 的几个常见的发展方向:客户端,游戏,服务端,嵌入式,移动端(移动只要是跨平台的移动端用C++写通用部分,GUI可以用平台特性,也可以用C++的跨平台框架)
针对界面UI方面C++的选择也是很多的,其实C++还是擅长“内功”的方面。如果你想带个GUI界面的话,也有很多类似Qt之类的框架和界面库可以使用,网上有很多,而且很多都跨平台,还开源,不管是 Windows,还是Mac,还是Linux,还是移动端平台,通吃的。本身C/C++就是跨平台的。

另外,说点大家感兴趣的,什么远程控制软件,什么木马,什么外挂等等,可以说95%以上都是用C/C++来写的。

难道这么多的用途还不值得大家来好好学学C/C++吗?

另外,闻道有先后、术业有专攻,C++虽然功能很强大,几乎什么都能做,但有的地方也是不适合,不是不能做而是不适合。比如网页开发,C++也能做,但是还是建议使用Java-Web或者PHP之类的语言来做,毕竟他们就是为了Web开发而生的。

2.从C到C++

1.C语言是结构化和模块化的语言,面向过程。未完全实现解决软件设计危机的目标。
2.C++保留了C语言原有的所有优点,增加了面向对象的机制。

3.vs2019 开始自己的第一个C++程序

原文出处

一、新建项目

1.点击菜单栏–>文件–>新建–>项目,我们可以看到上方存在的语言,平台和项目类型的选项

(1)语言这里我们就选择C++,或者所有语言
硬件工程师成长之路(6)——程序设计_第40张图片
(2)平台这里我们就选择windows,或者所有平台
硬件工程师成长之路(6)——程序设计_第41张图片
(3)项目类型这里选择控制台,或者所有项目类型
硬件工程师成长之路(6)——程序设计_第42张图片
博主这里以C++为例,选择空项目,我们来写一个简单的打印hello world的程序
硬件工程师成长之路(6)——程序设计_第43张图片
2.改变默认路径,填写项目名称,可勾选将解决方案和项目放在同一目录中
硬件工程师成长之路(6)——程序设计_第44张图片
3.可以看到并且可以看到项目结构:

引用
外部依赖项
头文件
源文件
资源文件
硬件工程师成长之路(6)——程序设计_第45张图片
3.右键源文件,点击“添加–>新建项”,改名(我这里是main.cpp),点击添加
在这里插入图片描述
4.生成以下界面
硬件工程师成长之路(6)——程序设计_第46张图片

二、代码演示

1.在main.cpp中输入代码(一定要自己动手输,脑子说会了,手还没说会呢)

#include 

int main()
{
	printf("Hello Word!");
	getchar();
	return 0;
}

每句解释
#include
在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明),#include的作用就是用来提供这些信息的,stdio.h是C编译系统提供的一个文件名,stdio是“standard input & output”的缩写,即有关标准输入输出的信息。

在这里的编译预处理命令称为文件包含命令,其作用是在编译之前把程序需要使用的关于系统定义的函数printf()的一些信息文件stdio.h包含进来。以“.h ”作为后缀的文件称为头文件。

int main()
{
}

在C语言当中,一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main() 函数”,也就是“主函数”。比如有个“做菜”程序,那么“ 做菜 ”这个过程就是“主函数”。在主函数中,根据情况,你可能还需要调用“买菜,切菜,炒菜”等子函数。
1、int main()是C语言main函数的一种声明方式;

2、int表示函数的返回值类型,表示该主函数的返回值是一个baiint类型的值;

3、main表示主函数,是C语言约定的程序执行入口,其标准的定义格式为int main(int argc, char *argv[]);在int main()中,()中没有数值表示入参为空,等同于int main(void);

printf(“Hello Word!”);
在程序执行到这句话时打印一条信息(内容为Hello World!),
用来表示该程序已经正确执行到这里。
是大型程序最基本也是最常用的调试手段。

getchar();
当程序调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。;

return 0;
函数中写明return 0,表示返回,对应主函数的int,如果“int main”写成“void main”就不需要return 0,因为void无类型,不需要返回值

硬件工程师成长之路(6)——程序设计_第47张图片
2.点击“本地Windows调试器”,运行结果
硬件工程师成长之路(6)——程序设计_第48张图片
硬件工程师成长之路(6)——程序设计_第49张图片
3.另一种写法


#include 
using namespace std;

int main()
{
    cout << "Hello World!"<<endl;

    return 0;
}

每句解释
#include 是个包含命令,就是把iostream.h这个文件里的内容复制到这个地方
ostream.h是input output stream的简写,意思为标准的输入输出流bai头文件。它包含:
(1)cin>>“要输入的内容”
(2)cout<<“要输出的内容”
这两个输入输出的方法需要#include来声明头文件。
iostream.h与iostream是不同的。
#include是在旧的标准C++中使用。在新标准中,用#include。iostream 的意思是输入输出流。#include是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。还要注意的是:在VS编程时要添加:
using namespace std;
其原因是:后缀为.h的头文件C++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,C++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。因此,当使用时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。

C++中的using namespace std的作用

endl 表示输出换换行符,并刷新缓冲区

\n 表示换行的转义字符

4.按下任意键,退出
硬件工程师成长之路(6)——程序设计_第50张图片

4.简单案例:实现两个数相加,输出结果!

#include 
using namespace std;

int main()
{
        cout << "Hello World!" << endl;
        cout << "2 + 3 = " << 2 + 3 << endl;
        return 0;
}

每句解释
"2 + 3 = "这个个是在控制台上要显示的字符串;
2 + 3 这个是真正计算的,也可以直接写5;

硬件工程师成长之路(6)——程序设计_第51张图片
硬件工程师成长之路(6)——程序设计_第52张图片

5.简单案例:实现 1~100 所有数相加,输出结果!

#include 
using namespace std;

int main()
{

        int sum = 0;
        for (int i = 1; i <= 100; i++)
        {
                sum += i;
        }

        cout << "1+2+3+...+100 = " << sum << endl;

        return 0;
}

在这里插入图片描述
硬件工程师成长之路(6)——程序设计_第53张图片

七、常用的函数

1、中文版C89, C95, C99, C11, C17, C23标准(标准库)

C 标准库头文件

硬件工程师成长之路(6)——程序设计_第54张图片
硬件工程师成长之路(6)——程序设计_第55张图片

2、数组清空

#include

#include

usingnamespacestd;

intmain()

{

charbuffer[]="Helloworld\n";

cout<<"Bufferbeforememset:"<<buffer<<endl;

memset(buffer,'\0',strlen(buffer));//数组清空
cout<<"Bufferaftermemset:"<<buffer<<endl;

return0;

}

3、C语言中怎么将字符123转化成数字123

C语言中bai可以调用atoi()函数将字符串数字转du换zhi成整型数,所需要头文件为daostdlib.h

函数原zhuan型:int atoi( char *s) ;

函数说明:shu将字符串s转换为整型值,返回给调用者。
参考代码:
硬件工程师成长之路(6)——程序设计_第56张图片

4、C语言小工具

C语言小工具
硬件工程师成长之路(6)——程序设计_第57张图片

八、硬件工程师 VS 软件工程师

原文出处
关于软件工程师和硬件工程师总有太多的话题。

常态往往是这样滴:

板子出问题了,
硬件工程师:肯定是软件的原因!
软件工程师:绝对是硬件的问题!
硬件工程师成长之路(6)——程序设计_第58张图片
如果。。。。我要是都会呢。。。。。

后记

一、通信协议

1、UART(串口)

1、UART(一)——起始位,停止位,奇偶校验位,数据位等概念
2、一文读懂串口(波形分析、起始位、数据位、停止位、空闲位)


硬件工程师成长之路(6)——程序设计_第59张图片
1位大约是0.44ms,1秒等于1000毫秒(等单位换算方便),1000/0.44约等于2400(发一个数据需要0.44毫秒,那1秒内可以发2400个数据),所以波特率是2400
硬件工程师成长之路(6)——程序设计_第60张图片

3、stm32实现串口接收的四种方法(hal库)可不定长接收
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4、大端模式、小端模式、高字节序、低字节序、MSB、LSB

5、STM32 LSB OR MSB

你可能感兴趣的:(硬件工程师成长之路,软件开发)