当前位置:   article > 正文

关于stm32F407软件编程知识的理解与总结(一)_stm32f407网口编程

stm32f407网口编程

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 以太网

以太网Ethernet是一种计算机局域网技术。

以太网协议解决了局域网的点对点通信。

但是,以太网协议不能解决多个局域网如何互通,这由 IP 协议解决。IP 协议可以连接多个局域网。

路由器就是基于 IP 协议。局域网之间要靠路由器连接。

具体见:https://blog.csdn.net/hzp666/article/details/73480514

11.挂载

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/713258
推荐阅读
  

闽ICP备14008679号