西门子嵌入式课程入门 第三讲 工程模板的建立

裸机开发 硬件上编程,没有操作系统或调度器的支持。代码直接控制硬件资源,按照严格顺序进行。效率高

优势:

1.直接控制硬件  获得最佳性能

2.低资源消耗         不需要额外调度器或操作系统 但可能含有简单的调度器

3.确定性执行        执行时间可以精准预测,每次运行结果相同

劣势:

1.复杂性        随功能增加,管理变得困难,

2.顺序执行         难以处理多任务和并发,一个任务阻塞会影响整个系统

3.响应延迟        紧急任务必须等待当前任务完成

调度器开发

调度器开发使用实时操作系统(RTOS)或任务调度器来管理多个任务执行。并且可以决定执行哪个任务,使并发任务管理变得简单。

优势

1.多任务支持 可以并发处理多个任务

2.优先级管理        重要任务可以先执行

3.资源管理        调度器可以共享资源,避免冲突 

4.更好的扩展性        新功能可以作为独立任务添加,无需重构整个系统

劣势

1.额外开销        调度器本身消耗资源

2.增加复杂性        需要理解调度器机制、任务优先级和同步问题。

        

模板建立

一、时钟配置         

     时钟信号 一种周期变化的信号,用于同步系统操作和数据传输。常为方波,具有特定频率,决定系统运行速度。

          作用 :

                1.同步操作 同步微控制器内部各种操作。

                2.确定运行速度        高时钟频率意味着更快的处理速度

                3.驱动外设        如定时器,SPI等

   为什么配置时钟?

        系统稳定性:不同应用对系统时钟频率有不同要求。

        性能优化

        功耗管理

        外设需求

配置步骤

     

        一般选择外部时钟RCC

        配置PLL

为什么选择HSE?

PLL通常选择HSE作为输入源,因为HSE提供了更高的频率精度、更广的频率范围和更好的稳定性,适合大多数高性能应用。而HSI则更多地用于启动阶段或低功耗场景,作为备用时钟源。选择HSE作为PLL的输入源,可以更好地满足系统对高精度和高性能的需求。

晶振配置看原理图的晶振

二、SYS配置

调试接口的选择与配置

一般选用串口调试(Serial Wire)

配置Serial Wire的目的是为了锁死两个引脚,否则无法直接烧录,需要手动拉低引脚才能正常烧录

三、工程配置

STM32开发 库的头文件保护

当屏蔽掉1、2、9、行时会出现

原因就是头文件出现了互相引用

在文件scheduler.h中引用了头文件mydefine.h,而在mydefine.h中又引用了scheduler.h。即出现了scheduler.h引用自身的情况。

为了防止出现该问题,使用头文件保护规则

头文件保护主要采用#ifndef/#define/#endif组合的方式。

代码如下:

#ifndef __STM32_HAL_GPIO_H
#define __STM32_HAL_GPIO_H

// 头文件的内容,例如函数声明、宏定义等
#include "stm32f4xx_hal_def.h"

typedef enum {
  GPIO_MODE_INPUT = 0x00,
  GPIO_MODE_NEW = 0x01
} GPIOMode_TypeDef;

#endif /* __STM32_HAL_GPIO_H */

头文件保护的写法

  • 在头文件的最开头,使用#ifndef来判断一个唯一的宏是否被定义。

  • 如果未定义,则使用#define定义该宏。

  • 在头文件的末尾,使用#endif结束条件编译。

规则

  • 唯一性宏名通常是唯一的,通常以双下划线开头,后跟库名或模块名,再加_H或类似的后缀。例如,__STM32_HAL_GPIO_H。至于为什么要用两个下划线来定义宏名,主要是为了防止与其他普通宏定义重复。例如,如果使用GPIO_PIN_0来代替这个判断宏,可能会因为stm32f10x.h已经定义了GPIO_PIN_0,导致bsp_led.h文件无效。

  • 防止重复包含:当头文件第一次被包含时,宏未被定义,#ifndef判断为真,头文件内容被包含,同时宏被定义。当下一次包含该头文件时,宏已定义,#ifndef判断为假,头文件内容将被跳过。

  • 头文件内容的完整性:所有的头文件内容(包括其他头文件的包含、函数声明、宏定义等)都应该包含在#ifndef#endif之间。

烧录器推荐使用DAP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值