赞
踩
1.对GPIO_Init(GPIOx,&GPIO_InitStructure)的理解:
“GPIO_Init(GPIOB, &GPIO_InitStructure)”这个函数,参数1”GPIOB“很好理解,就是GPIO的外设口B(也可以是A,C,D,E),第二个参数,该函数原型是这样的:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
功能描述: 根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器
输入参数1: GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设
输入参数2: GPIO_InitStruct:指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息。
2.STM32启动文件(Reset_Handler函数):
该文件主要实现目的:
设置初始SP;
设置初始PC=Reset_Handler;
设置向量表入口地址,并初始化向量表;
调用SystemInit,把系统时钟配制成72M,SystemInit在库文件system_stm32f10.c定义;
调转到标号_main,最终来到C程序文件;
第一行是程序注释,在汇编里面注释用的是“;”。
第二行是定义了一个子程序:Reset_Handler。
第三行EXPORT 表示Reset_Handler 这个子程序可供其他模块调用。
第四行和第五行IMPORT 说明SystemInit 和__main 这两个标号在其他文件,在链接的时候需要到其他文件去寻找。
SystemInit在库文件system_stm32f10x.c 实现,用来初始化STM32的一系列时钟,把系统时钟设置为72MHZ。STM32的时钟比51 单片机复杂,需要经过一系列的配置才能达到稳定运行的状态。
__main 其实不是我们定义的,当编译器编译时,只要遇到这个标号就会定义这个函数,该函数的主要功能是:负责初始化栈、堆,配置系统境,并在最后跳转到用户自定义的main函数,从此来到C的世界。
第六行把SystemInit 的地址加载到寄存器R0。
第七行程序跳转到R0 中的地址执行程序,之后系统的时钟就被设置成72MHZ。
第八行把_main 的地址加载到寄存器R0。
第九行程序跳转到R0 中的地址执行程序,执行完毕之后就去到我们熟知的C 世界。
第十行表示子程序的结束。
具体见博客:https://blog.csdn.net/EXC_Twisted_Fate/article/details/78643477
3.开漏输出和推挽输出:
开漏输出只能输出低电平,类似于三极管的集电极,要输出高电平需要上拉电阻才能输出。
推挽输出(push-pull output)既可以输出低电平,也可以输出高电平,其优点是可以直接驱动功耗不大的数字器件。
详细解释:https://blog.csdn.net/qq_27485531/article/details/81608784
4.Cortex-m3启动代码分析:
https://wenku.baidu.com/view/c1348c38591b6bd97f192279168884868662b841.html
5.嵌入式中.c和.h的区别:
https://blog.csdn.net/DP29syM41zyGndVF/article/details/79636836
简单点说:
.C:写具体函数
.H:是.C的头文件,里面包含函数的定义,供其他.C函数调用。
比如有USART.C和USART.H,我再MAIN.C里想用USART.C里的函数USART_INIT(),我在MAIN.C里需要加“#include"USART.H"”,然后用函数“USART_INIT()”
6.关于独立看门狗的预分频系数和重装载值:
具体解释看博客:https://blog.csdn.net/FelikZhang/article/details/79336750
比如:要改成看门狗的喂狗时间为2秒,可以设置看门狗时钟预分频值prer为5,rlr还是625。
7.关于_SysTick_Config()函数的SysTick时钟配置
Systick又叫系统嘀答定时器,是一个24位的硬件定时器。
具体解释见博客:https://blog.csdn.net/qq_36373500/article/details/78703904#
PWM(脉冲宽度调制)
PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。
8.逻辑非运算符【!】
不等于运算符【!=】
9.FATFS----文件操作
FatFs是一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统。FatFs 组件的编写遵循ANSI C(C89),完全分离于磁盘I/O层,因此不依赖于硬件平台。它可以嵌入到便宜的微控制器中,如 8051, PIC, AVR, ARM, Z80, RX等等,不需要做任何修改。
10.Ethernet 以太网
以太网协议解决了局域网的点对点通信。
但是,以太网协议不能解决多个局域网如何互通,这由 IP 协议解决。IP 协议可以连接多个局域网。
路由器就是基于 IP 协议。局域网之间要靠路由器连接。
具体见:https://blog.csdn.net/hzp666/article/details/73480514
11.挂载
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。