栈内存系统在用
堆空间是用户使用
汇编语言也称为符号语言,他将不同的0和1用不同的符号表示出来
所以要掌握硬件开发,汇编语言也要学
linux内核90%用c语言写的剩下10%用汇编语言写的
用汇编语言就得用汇编指令,汇编指令可以在STM32->参考手册->ARM指令速查手册
后期工作三年到五年升职加薪靠算法(涉及到数据结构以及高等数学(三剑客高数,线代,微积分))
队列:排队的,先来的先走
栈:理解为瓶子,先放的后倒出来,所以学的时候有一个栈顶,还要用一个指针指向栈顶
栈和队列的区别:
抗干扰能力强(发送数据,别的手机收到了,抗干扰性太差了)
ROM(Read Only Memory) 属于非易失存储设备(掉电不丢失),但程序写进去不能改
RAM(随机存储器)掉电会丢失,但存储速度快
RTC实时时钟可以记录时间
SPI协议:需要引脚多,但代码少
IIC协议:需要引脚少,但代码麻烦
陀螺仪MPU6050(IIC协议)去实现姿态结算:平衡车,四轴飞行器,智能手表(计算步数)
继电器:你给他一个输入电压,他会给你输出一个相应的电压
直流电机:控制转的快慢,不能控制转多少圈
步进电机:控制转多少圈
RTOS:国外 uCOSII(稳定,学习不费钱,商业付费),FreeRTOS(免费,但资源少)
国内 RT-thread...
搭上操作系统可以并发实时操作多个系统
相比高端芯片STM32的成本更低,实时性更好
了解(不要出现大量了解,写了解要写别人不了解的东西,人工智能,深度学习算法等领域,谨慎使用,最好别乱写) 熟悉(也不要大量出现熟悉,不能写熟悉C语言,必凉凉) 熟练(多写,尤其是数据结构,笔试题必考,要多练) 精通(不写,不然必凉)
HAL:硬件抽象层hardware abstract layer
三个魔方进行添加文件
inc:include头文件
src:sourc .c文件
一般用尖括号<>包含系统路径
用双引号""包含自己写的路径(所以就要告诉系统你的头文件路径在哪里)
魔术棒->c/c++ ->Include Paths进行添加已经有的头文件
TF容忍5V电压输入,不带FT的给5V就会撑爆
function先翻译成函数,如果翻译不成功,则翻译成功能
LM1117是升压降压芯片
在配置外设结构体之前,都需要打开时钟(心脏)
任何一个外设都是由时钟控制的,时钟就相当于外设的开关,因为底层寄存器一般内部结构都包括D触发器,而触发器需要触发信号,触发信号由时钟提供
能存一位叫触发器,存N位叫寄存器,他的输入信号就是用时钟提供的。
STM32低功耗的根本原因就是在芯片复位之后,所有外设的时钟(开关)都是默认关闭的,需要用到那个外设就打开哪个外设的时钟,不需要就关闭,有利于降低功耗。
函数库中提供的时钟使能函数在stm32f1xx_rcc.h中声明,在stm32f1xx_rcc.c中定义
规定函数声明放在末尾
引脚复位,输出低电平
从右向左看
每个引脚内部结构都有保护二极管,防止外部输入不正常电压烧坏芯片
每个引脚都有俩个电阻(每个电阻都有开关),有上拉电阻和下拉电阻
电阻的作用:在引脚没有外部电压的情况下,提供引脚一个默认的状态。
上拉电阻:给引脚一个默认的高电平。
下拉电阻:给引脚一个默认的低电平。
电阻和电源近就叫上拉电阻
高阻态,既不是高电平也不是低电平
电位比较
高于正向阈值电压可以称为正反馈
输入模式
-输入浮空(GPIO_Mode_IN_FLOATING)
-输入上拉(GPIO_Mode_IPU)
-输入下拉(GPIO_Mode_IPD)
-模拟输入(GPIO_Mode_AIN)
输出模式
-开漏输出(GPIO_Mode_Out_OD)
-开漏复用功能(GPIO_Mode_AF_OD)
-推挽式输出(GPIO_Mode_Out_PP)
-推挽式复用功能(GPIO_Mode_AF_PP)