STM32F4 开发指南 -寄存器版本 3.2 小节
新建一个文件夹 Template 新建一个 user在下面,
2打开keil project / New project 保存在user下面,然后就是下图所示的选择芯片。
选择相应的芯片。右图是工程的基本雏形。
接下来要添加启动文件,从历程里面复制到user、目录上。这个 启动文件与库函数是有些区别的。然后点击魔术棒/ 点击 Target 将晶振改成 8M
然后要将启动文件添加到工程当中。在工程 中右键选择添加 文件类型选择 .s, 点击 add。
新建一个OBJ文件夹,将编译出的过程文件定位到 OBJ.
接下来复制系统文件夹到工程当中。在寄存器版本的历程当中找一个系统文件夹 SYSTEM, 然后将它添加到工程当中。
接下来还要新建一个 USER的分组。这个 TEST.C 主要是用来写主函数的
然后添加头文件路径 Define 添加全局宏定义 不优化
此时,编译 仍然不能通过。
我们从 STM32 参考资料固件库 libraries/ CMSIS/lnclude/ 将那4个文件复制到 新建目录的 SYSTEM/sys
此时就可以编译通过了。
关键字:STM32 正点原子 新建工程模板 寄存器
引用地址:
STM32 学习 day 3 正点原子 第11讲 新建工程模板-基于寄存器
推荐阅读最新更新时间:2024-11-06 17:30
STM32串口DMA连续发送两帧,导致数据部分覆盖的问题
问题描述 使用STM32的串口进行DMA发送(Noraml模式),在某个任务中连续调用两次发送函数log_printf(),但是发回的数据在串口调试助手上显示与预期不符。第一次发送的数据有一部分被第二次发送的数据覆盖,如图所示: 任务代码如下: /* Log_Task function */ void Log_Task(void const * argument) { /* USER CODE BEGIN Log_Task */ /* Infinite loop */ for(;;) { if(router_rx_flag == 1) { router_rx_flag = 0;
[单片机]
STM32跑ucosII系统之信号和消息邮箱介绍
写在前面: “信号”可以单纯的理解为一个信号量(trig触发用),在任务1中传递一个信号给任务2,那么,任务2接收到这个信号,会往下执行。 “消息邮箱”也可以理解为一个信号量,只不过这个消息可以携带内容:比如变量的值。 一、事件——任务之间通信的中间环节 任务间的同步依赖于任务间的通信。 在 UCOSII 中,是使用信号量、邮箱(消息邮箱)和消息队列这些被称作事件的中间环节来实现任务之间的通信的 . 发送事件 请求事件 任务1 ------------ 事件 ------------ 任务2 任务 1 是发信方,任务 2 是收信方。任务 1 负责把信息发送到事件上,这项 操作叫做发送事件。任
[单片机]
STM32自学笔记——外部中断
stm32的每个IO口都可以作为外部中断的入口。stm32f103的中断控制器支持19个外部中断/事件请求(question1:外部中断和时间请求的区别?),这19个外部中断中0-15对应外部IO口的输入中断16连接到PVD输出(question2:什么是PVD输出?)17连接到RTC闹钟事件(question3:这有什么意义)18连接到USB唤醒事件(question4:USB唤醒事件是什么?)。由上可以看出stm32供IO的中断线只有16个但是stm32的IO口远远不止16个那么怎么一一对应呢?于是 STM32 就这样设计, GPIO 的管教 GPIOx.0~GPIOx.15(x=A,B,C,D,E, F,G)分别对应中断线
[单片机]
STM32——SPI接口
一、SPI协议【SerialPeripheral Interface】 串行外围设备接口,是一种高速全双工的通信总线。在ADC/LCD等与MCU间通信。 1、SPI信号线 SPI 包含 4 条总线,SPI 总线包含 4 条总线,分别为SS 、SCK、MOSI、MISO。 (1)SS(SlaveSelect):片选信号线,当有多个 SPI 设备与 MCU 相连时,每个设备的这个片选信号线是与 MCU 单独的引脚相连的,而其他的 SCK、MOSI、MISO 线则为多个设备并联到相同的 SPI 总线上,低电平有效。 (2)SCK (Serial Clock):时钟信号线,由主通信设备产生,不同的设备支持的时钟频率不一样,
[单片机]
STM32 IO口的八种模式使用小结
/** * @brief Configuration Mode enumeration */ typedef enum { GPIO_Mode_AIN = 0x0, //模拟输入 GPIO_Mode_IN_FLOATING = 0x04, //浮空输入 GPIO_Mode_IPD = 0x28, //下拉输入 GPIO_Mode_IPU = 0x48, //上拉输入 GPIO_Mode_Out_OD = 0x14, //开漏输出 GPIO_Mode_Out_PP = 0x10, //推挽输出 GPIO_Mode_AF_OD = 0x1C, //复用开漏输出 GPIO_Mode_AF_PP =
[单片机]
使用STM32固件库操作控制LED灯(CMSIS)(STM32_03)
直接使用寄存器地址来进行STM32开发要对每一个寄存器的地址通过查找芯片手册,对每一个寄存器的各个位的含义也要查清楚,然后决定对那个地址的哪些位进行怎样的设置。这种编程效率低,程序的可移植性差,程序的可读性差。 一、CMSIS 基于cortex系列的处理器内核都是一样的,区别在于除内核以外的外设的差异,由于这些差异,导致不同处理器移植起来比较麻烦,所以ARM与芯片厂商建立了CMSIS标准。ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller SoftwareInterface Standard) 。 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层,使用CMSIS
[单片机]
STM32做SPI主机很常见,但是SPI从机玩过吗?
在平常的开发中,很多时候我们使用SPI都是使用主机模式去驱动一些传感器、存储器等等,很少会用到SPI从机。有时候,我们又需要STM32的SPI配置为从机去接收数据,本文就是介绍如何使用探索者开发版配置SPI从机。 这里我们以探索者开发版标准库实验25SPI实验为基础例程进行修改。这里我们把SPI从机只定义为一个接收,所以没有发送数据的操作。SPI的基础知识需要大家自己去学习,这里着重说明使用方法。 接下来,我们来看一下具体代码实现。 SPI初始化函数修改为如下代码: 这里特别需要几点: 以上代码跟原来程序不同点: ①SPI1的引脚使用的是PA4(SPI1_NSS),PA5(SPI1_CLK)和PA7(SPI1_MOSI)三
[单片机]
STM32中ucos的编写程序
* Includes ------------------------------------------------------------------*/ #include config.h /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ //定义 堆栈大小 //#define TASK_STK_SIZE 128 #define TASK_STK_SIZ
[单片机]