STM32F1学习笔记1

1.__weak修饰符
__weak 这个函数为“弱函数”,加上__weak 修饰符的函数,我们可以再文件中重新定义一个同名函数,在最后编译时,编译器会选择我们定义的函数;如果我们没有重新定义这个函数,编译器会默认的编译 __weak声明的函数,并且编译不会报错;

2. HAL_PPP_MspInit 函数和HAL_PPP_Init 函数
例:HAL_UART_MspInit () HAL_UART_Init ()
我们在写代码时会自己写一个 uart_init()初始化函数,这个函数主要是设置串口的相关参数,比如:波特率,停止位,奇偶校验位等,并且最终是通过调用HAL_UART_Init 函数进行参数设置。而函数 HAL_UART_MspInit 则主要进行串口GPIO 引脚初始化设置。在函数 HAL_UART_Init 内部,通过判断逻辑判断如果串口还没有进行初始化,那么会调用函数 HAL_UART_MspInit 进 行 相 关 初 始 化 设 置,同时, 在 文 件stm32f1xx_hal_uart.c 内部,有定义一个弱函数 HAL_UART_MspInit,所以,实际上在函数 HAL_UART_Init 内部调用的HAL_UART_MspInit()函数,最终执行的是用户在 usart.c 中自定义的HAL_UART_MspInit()函数。那 么 整 个 串 口 初 始 化 的 过 程 为 : 用 户 函 数 usart_init→ HAL_UART_Init→HAL_UART_MspInit。
通俗来讲,在 STM32 的 HAL 驱动中HAL_PPP_MspInit()作为回调,被 HAL_PPP_Init()函数所调用。当我们需要改动串口引脚的时候,我们只需要修改 HAL_PPP_MspInit 函数内容而不需要修改 HAL_PPP_Init 入口参数内容。

3.程序仿真按钮各个按键功能
在这里插入图片描述
复位:其功能等同于硬件上按复位按钮。相当于实现了一次硬复位。按下该按钮之后,代码会重新从头开始执行。
执行到断点处:该按钮用来快速执行到断点处,有时候你并不需要观看每步是怎么执行的,
而是想快速的执行到程序的某个地方看结果,这个按钮就可以实现这样的功能,前提是你在查看的地方设置了断点。
停止运行:此按钮在程序一直执行的时候会变为有效,通过按该按钮,就可以使程序停止
下来,进入到单步调试状态。
执行进去:该按钮用来实现执行到某个函数里面去的功能,在没有函数的情况下,是等同于执行过去按钮的。
执行过去:在碰到有函数的地方,通过该按钮就可以单步执行过这个函数,而不进入这个函数单步执行。
执行出去:该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的位置。
执行到光标处:该按钮可以迅速的使程序运行到光标处,其实是挺像执行到断点处按钮功能,但是两者是有区别的,断点可以有多个,但是光标所在处只有一个。
汇编窗口:通过该按钮,就可以查看汇编代码,这对分析程序很有用。
堆栈局部变量窗口:通过该按钮,显示 Call Stack+Locals 窗口,显示当前函数的局部变量及其值,方便查看。
观察窗口:MDK5 提供 2 个观察窗口(下拉选择),该按钮按下,会弹出一个显示变量的窗口,输入你所想要观察的变量/表达式,即可查看其值,是很常用的一个调试窗口。
内存查看窗口:MDK5 提供 4 个内存查看窗口(下拉选择),该按钮按下,会弹出一个内
存查看窗口,可以在里面输入你要查看的内存地址,然后观察这一片内存的变化情况。是很常用的一个调试窗口
串口打印窗口:MDK5 提供 4 个串口打印窗口(下拉选择),该按钮按下,会弹出一个类 似串口调试助手界面的窗口,用来显示从串口打印出来的内容。
逻辑分析窗口:该图标下面有 3 个选项(下拉选择),我们一般用第一个,也就是逻辑分析
窗口(Logic Analyzer),点击即可调出该窗口,通过 SETUP 按钮新建一些 IO 口,就可以观察这些 IO 口的电平变化情况,以多种形式显示出来,比较直观。
系统查看窗口:该按钮可以提供各种外设寄存器的查看窗口(通过下拉选择),选择对应外
设,即可调出该外设的相关寄存器表,并显示这些寄存器的值,方便查看设置的是否正确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值