关于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.

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值