STM32自学笔记
文章平均质量分 63
笔者自学STM32过程中的自我见解,仅供参考,不登大雅之堂
四千里路云吹风
脑袋被门夹过
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STM32之复位和时钟控制(RCC)
一、复位STM32复位电路如图所示:复位分为3种形式,即电源复位、系统复位和备份区域复位。当系统上电、掉电及从待机模式返回时,发生电源复位。电源复位除备份区域的寄存器外所有的寄存器。系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器外的所有寄存器。当在NEST引脚上产生一个低电平,系统复位发生,即通过按复位按钮可以引发复位。另外,当看门狗定时器计数终止时,包括窗口看门狗(WWDG)和独立看门狗(IWDG)计数终止,会产生复位。另外,软件复位和低电压也会导致系统复位。对于备份区域的原创 2021-04-13 23:12:20 · 5552 阅读 · 1 评论 -
GPIO之概述
学习一款处理器时,我们的学习思路应该如下:1、首先需要掌握基本的IO口的控制方法。例如,如何控制某个IO口输出高低电平等。2、其次是学习串口的使用方法,可以通过串口输出,这一步至关重要。只要串口可以输出信息了,那么接下来的学习过程中,可以通过串口来输出程序的调试信息,跟踪程序的执行流程等。3、然后是学习时钟系统,只有深入理解了处理器的时钟系统,也就是时钟树才能准确理解各个功能模块的工作流程,以及时钟配置关系等等。4、接下来可以学习ADC,实现模拟信号的输入与采集,如果有必要的话,可以学习一款flas原创 2021-01-12 16:44:54 · 1831 阅读 · 0 评论 -
STM32流水灯实验完整源代码
#include"stm32f10x_gpio.h"#define Led1_On() GPIO_SetBits(GPIOB,GPIO_Pin_5)#define Led1_Off() GPIO_ResetBits(GPIOB,GPIO_Pin_5)#define Led2_On() GPIO_SetBits(GPIOD,GPIO_Pin_6)#define Led2_Off() GPIO_ResetBits(GPIOD,GPIO_Pin_6)#define Led3_O原创 2021-01-08 09:30:23 · 11984 阅读 · 1 评论 -
关于ARM开发过程中C语言如何使用及其需要注意的一些问题之 位运算符和位运算
位运算是指二进制之间的运算。在嵌入式系统设计中,常常要处理二进制的问题,如将某个寄存器的某一位置1或置0,将数据左移5位等。常用的位运算符如图所示。按位与运算符(&)**按位与运算规则:**参加运算的两个操作数,每个二进制位进行“与”的运算,如果两位都是1,则运算结果为1,否则为0.例: 1001&1011运算过程如图所示。但仅仅知道上述运算规则是远远不够的,在STM32系列处理器的开发过程中,按位与运算主要是用来清除某一位,或者说主要用来实现清零。按位或运算符(|)按位或运原创 2021-01-07 20:22:12 · 576 阅读 · 0 评论 -
关于ARM开发过程中C语言如何使用及其需要注意的一些问题之 防止文件重复包含的技巧
编译器对C语言源程序进行处理大致可以分为预处理(preprocess)、编译(compile)、汇编(assemble)和链接(linking)共四个步骤最终才生成可执行程序,一般在对源程序进行语法和词法分析之前,先要对程序进行预处理,C语言编译器已经提供了部分预处理指令来指示编译器如何对源程序进行预处理,预处理指令以#开始,独占一行。这里我们主要说一下#ifndef和#endif,他们主要是用在防止头文件重复包含的情况,这对于模块化开发至关重要。我们在这里以stm32f10x.h固件库文件的内容为例:原创 2021-01-07 21:14:59 · 324 阅读 · 1 评论 -
关于ARM开发过程中C语言如何使用及其需要注意的一些问题之 控制结构
在编程的过程中,很多时候需要使用控制语句来实现对程序的分支转移和循环等操作,用于控制程序执行流程的语句主要有选择结构和循环结构。选择结构选择结构常用的有if…else和switch…case结构,通过选择结构可以方便控制程序的执行流程。持续关注,以后会在具体程序中展开叙述。循环结构C语言中提供的循环结构有while、do…while和for循环,但是根据具体的应用场合可能会选择不同的循环结构来实现相应的功能。持续关注,以后会在具体程序中展开叙述。...原创 2021-01-07 20:34:53 · 348 阅读 · 0 评论 -
关于ARM开发过程中C语言如何使用及其需要注意的一些问题之数据类型基础(常用)
常用typedef声明新的类型名来替代已有的类型名,这主要是便于移植。例如,在程序中我们经常会看到:typedef unsigned int u32.............u32 var=3;第1行用typedef声明了一个类型u32来替代unsigned int,这样比较方便,从u32可以看出来这是一个unsigned型数据(前面的u就是这个意思),后面的32表示的是一个32位的数据。第3行用刚才的u32定义了一个变量var。#define u32 unsigned int.......原创 2021-01-07 17:18:51 · 547 阅读 · 0 评论 -
关于ARM开发过程中C语言如何使用及其需要注意的一些问题之数据类型基础
数据类型基础ARM编译器支持整数型和浮点型的数据,一般的数据类型有char、int两种。· char表示1个字节的数据,长度为8位。· int表示1个字数据类型,长度为32位。如何理解?就好比我们自己在家里做雪糕一样,做出来的雪糕和模子是一样的。在这里数据类型就好比“模子”,定义变量就好比内存“模子”里面的“雪糕”。举个例子,例如:int val=3,就好比在内存里冻结了一个跟int这个“模子”一样大小的内存片;这里是4个字节,冰箱这个内存片里写入了初值3。以后怎么找到这个内存片呢?我们在这里对原创 2021-01-06 23:18:31 · 743 阅读 · 0 评论 -
STM32F103的11个定时器详解
STM32F103系列的单片机一共有11个定时器2个高级定时器4个普通定时器2个基本定时器2个看门狗定时器1个系统嘀嗒定时器除去看门狗定时器和系统定时器的八个定时器列表;8个定时器分成3个组;TIM1和TIM8是高级定时器TIM2-TIM5是通用定时器TIM6和TIM7是基本的定时器定时器都是16位的,它们的计数器的类型除了基本定时器TIM6和TIM7都支持向上,向下,向上/向下这3种计数模式计数器三种计数模式向上计数模式:从0开始,计到arr预设值,产生溢出事件,返回重新计时原创 2021-01-06 22:20:58 · 5626 阅读 · 0 评论 -
认识STM32开发环境的固件库
认识固件库本文笔者就结合上一篇文章《学习STM32mini版(流水灯)》,来解释什么是固件库以及他是怎么工作的。STM32的固件库又叫固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少开发者开发使用片内外设的时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有原创 2020-12-05 17:09:24 · 6878 阅读 · 2 评论 -
学习STM32mini版(流水灯)
用STM32mini版写一个流水灯今天,我用STM32mini版来写一个流水灯,自己的能力有限,是个小白,有不完美或者不对的的地方还望赐教。不喜勿喷。原创 2020-12-03 21:15:09 · 3726 阅读 · 13 评论 -
我对STM32的初步认知
STM32初次接触最初的ARM处理器是由英国剑桥的Acorn计算机公司设计。ARM公司成立于1990年。该公司的知识产权(IP)提供商(不生产芯片)。目前,ARM架构处理器已经在高性能,低功耗,低成本的嵌入式应用领域占据了领先地位。STM32系列处理器是ST公司基于ARM Cortex-M内核而专门开发的。由于采用了Cortex内核,因此,其中断响应速度得到了大幅度的提升,此外由于ST公司提供了大量的固件库,使得其开发流程得到了简化,因此,STM32系列处理器得到了广大工程师和科学研究院所学生们的广泛关原创 2020-12-02 18:24:43 · 761 阅读 · 1 评论
分享