摘要: 过来人结合自身的体会和大家聊聊,希望新人能少走弯路。每个人的情况不一样,我下面的描述可能并不适合每一个看到这篇文章的人。 C/C++语言 如果你的基础很差, 建议不要一开始就学C++语言,从C开始学起,对程序有个初步的认识,循序渐进。C语言的书嘛,先买一本 300 页以内的,把书中的每一个例子都通过 阅读全文
posted @ 2020-11-01 14:03 STM32嵌入式开发 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的章节中可以以此作为参考。 C Hello World 实例 C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 让我们看一段简单的代码,可以输出单词 "Hello World": 实例 阅读全文
posted @ 2020-11-01 14:02 STM32嵌入式开发 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 本地环境设置 如果您想要设置 C 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C 编译器。 文本编辑器 这将用于输入您的程序。文本编辑器包括 Windows Notepad、OS Edit command、Brief、Epsilon、EMACS 和 vim/vi。 文本编辑器的名称 阅读全文
posted @ 2020-11-01 14:01 STM32嵌入式开发 阅读(1177) 评论(0) 推荐(0) 编辑
摘要: 我们已经看过 C 程序的基本结构,这将有助于我们理解 C 语言的其他基本的构建块。 C 的令牌(Tokens) C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号。例如,下面的 C 语句包括五个令牌: printf("Hello, World! \n"); 这五个令牌分 阅读全文
posted @ 2020-11-01 14:00 STM32嵌入式开发 阅读(459) 评论(0) 推荐(0) 编辑
摘要: C语言简介 C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的。C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现。 在 1978 年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie 阅读全文
posted @ 2020-11-01 13:51 STM32嵌入式开发 阅读(1152) 评论(0) 推荐(0) 编辑
摘要: 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 源代码: #include<stdio.h> int main() { int i,j,k; printf("\n 阅读全文
posted @ 2020-11-01 13:48 STM32嵌入式开发 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 总结学习 C 语言的几个步骤,其他编程语言基本类似。 看书 学习一门编程语言少不了先学习基本语法。 C语言的语法也就是变量,数组、指针、表达式、逻辑操作、函数,宏定义等等。学习这些先买一本入门级书籍,其实大都差不多,最经典的就是谭浩强的那本了,虽然在知乎上没少被人黑,但是毕竟流行了这么多年,总归是有 阅读全文
posted @ 2020-11-01 13:47 STM32嵌入式开发 阅读(729) 评论(0) 推荐(0) 编辑
摘要: 之前的推文中说到,当使用一个外设时,必须先使能它的时钟。怎么通过库函数使能时钟呢?如需了解寄存器配置时钟,可以参考《STM32F10x中文参考手册》“复位和时钟控制(RCC)”章节,其中有详细的寄存器介绍。固件库已经把时钟相关寄存器的使能配置都封装好,放在stm32f10x_rcc.c和stm32f 阅读全文
posted @ 2020-11-01 13:45 STM32嵌入式开发 阅读(3457) 评论(0) 推荐(0) 编辑
摘要: 在时钟树的讲解中我们知道,通过修改PLLMUL中的倍系数值(2-16)可以改变系统的时钟频率。在库函数中也有对时钟倍频因子配置的函数,如下: void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul); 第一个参数是PLL时钟源选择 阅读全文
posted @ 2020-11-01 13:44 STM32嵌入式开发 阅读(860) 评论(0) 推荐(0) 编辑
摘要: 时钟对于单片机来说是非常重要的,它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行。时钟系统犹如人的心脏,一旦有问题整个系统就崩溃。我们知道STM32属于高级单片机,其内部有很多的外设,但不是所有外设都使用同一时钟频率工作,比如内部看门狗和RTC,它只需30KHz的时钟频率即可工作,所以内部 阅读全文
posted @ 2020-11-01 13:43 STM32嵌入式开发 阅读(717) 评论(0) 推荐(0) 编辑
摘要: 在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main。那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使用库函数编写的LED程序,在system_stm32f10x.c文件中可以找到SystemInit( 阅读全文
posted @ 2020-11-01 13:41 STM32嵌入式开发 阅读(835) 评论(0) 推荐(0) 编辑
摘要: 要点亮LED,需要完成LED的驱动, 在工程模板上新建一个led.c和led.h文件,将其存放在led文件夹内。这两个文件需要我们自己编写。 通常xxx.c文件用于存放编写的驱动程序,xxx.h文件用于存放xxx.c内的stm32头文件、管脚定义、全局变量声明、函数声明等内容。 因此在led.c文件 阅读全文
posted @ 2020-11-01 13:38 STM32嵌入式开发 阅读(1341) 评论(0) 推荐(1) 编辑
摘要: 已经对启动文有了大致了解,再来看看系统在复位过程中做了哪些工作。复位程序如下: 1 ; Reset handler 2 3 Reset_Handler PROC 4 5 EXPORT Reset_Handler [WEAK] 6 7 IMPORT SystemInit 8 9 IMPORT __ma 阅读全文
posted @ 2020-11-01 13:37 STM32嵌入式开发 阅读(1102) 评论(0) 推荐(0) 编辑
摘要: 电路图分析 首先找来单片机的原理图,根据原理图进行相关的设计工作。 例如在上图中相同网络标号表示它们是连接在一起的,因此D1发光二极管阴极是连接在STM32的PC0管脚上,D2指示灯阴极连接在PC1管脚上,其他LED管脚以此类推。如果要使D1指示灯亮,只需要控制PC0管脚输出低电平, 如果要使D1指 阅读全文
posted @ 2020-11-01 13:35 STM32嵌入式开发 阅读(788) 评论(0) 推荐(0) 编辑
摘要: 在启动文件内部使用的都是汇编语言,这个文件的作用是负责执行微控制器从“复位”到“开始执行 main 函数”中间这段启动时间所必须进行的工作。它完成的具体工作有: 初始化堆栈指针SP=_initial_sp 初始化PC指针=Reset_Handler 初始化中断向量表 配置系统时钟 调用C库函数_ma 阅读全文
posted @ 2020-11-01 13:34 STM32嵌入式开发 阅读(864) 评论(0) 推荐(0) 编辑