推荐阅读最新更新时间:2024-03-16 16:13
用Keil对STM32代码封库的实现方法
有时候,我们所写代码的具体实现方法不想让其他人知道。这时,可以用Keil对代码进行封库。 注意:在封库之前,必须确保整个工程代码能够编译通过。 下面举例说明操作步骤: 想要把工程中“firmware.c”文件封装成库文件。 1、对不封装成库的文件执行以下操作: 点击“OK”确定。对除“firmware.c”的其他文件,执行上述操作。操作完成后,会发现文件图标有所变化: 2、选择“Options for Target”- output选项卡- 选择Create Library项 3、编译整个工程,会在选定的路径 ..\Output\ 下出现 firmware.lib 文件 4、删除工程中的“fir
[单片机]
STM32——串口通信升级版(队列方式)
#ifndef _USART_QUEUE_H_ #define _USART_QUEUE_H_ #include type.h typedef enum { USART_QUEUE_EMPTY = 0, USART_QUEUE_FULL = 1, USART_QUEUE_OK = 2, } usart_queue_status_t; #define USART_QUEUE_SIZE 1024 typedef struct { uint16_t front; uint16_t rear; uint16_t size; char data ; } usart_queue_t; extern usa
[单片机]
STM32通用定时器---基本定时学习
1.STM32的Timer简介 STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的8个定时器。 定时器 计数器分辨率 计数器类型 预分频系数 产生DMA请求 捕获/比较通道 互补输出 TIM1 TIM8 16位 向上,向下,向上/向下 1-65536之间的任意数 可以 4 有 TIM2 TIM3 TIM4 TIM5 16位 向上,向下,向上/向下 1-65536之间的任意数 可以 4 没有 TIM6 TI
[单片机]
STM32-(06):位绑定的基础应用
通过位绑定来快速实现位操作。 这些区域可以进行位绑定 SRAM区:0x2000 0000 ~ 0x200f ffff 1M 公式:A的范围(0x2000 0000 ~ 0x200f ffff) n的范围(0~7),表示第几位 ,AliasAddr表示位绑定的地址 AliasAddr = 0x22000000 + ((A-0x20000000)*8 + n)*4 = 0x22000000 + (A-0x20000000)32 + n4 片上外设:0x4000 0000 ~ 0x400f ffff 1M 公式:A的范围(0x4000 0000 ~ 0x400f ffff) n的范围(0~7),表示第几
[单片机]
stm32 IIC+MMA8451代码
IIC驱动MMA8451通过串口发送显示数据 5V 3.3V连一个就可以了。 SA0确定地址,接地。 SCl,SDA肯定要连。 以内接上拉电阻。 单片机源程序如下: /******************** (C) COPYRIGHT 2011 野火嵌入式开发工作室 ******************** * 文件名 :main.c * 描述 :I2C MMA8451测试 * 实验平台:野火STM32开发板 * 库版本 :ST3.0.0 *********************************************************************************
[单片机]
STM32的时钟系统RCC详细整理
一、综述: 1、时钟源 在 STM32 中,一共有 5 个时钟源,分别是 HSI 、 HSE 、 LSI 、 LSE 、 PLL 。 ①HSI 是高速内部时钟, RC 振荡器,频率为 8MHz ; ②HSE 是高速外部时钟,可接石英 / 陶瓷谐振器,或者接外部时钟源,频率范围是 4MHz – 16MHz ; ③LSI 是低速内部时钟, RC 振荡器,频率为 40KHz ; ④LSE 是低速外部时钟,接频率为 32.768KHz 的石英晶体; ⑤PLL 为锁相环倍频输出,严格的来说并不算一个独立的时钟源, PLL 的输入可以接 HSI/2 、 HSE 或者 HSE/2 。PLL倍频可选择为 2 – 16 倍,
[单片机]
stm32专题十三:DMA(三)存储器到外设
DMA的存储器到外设的配置,其实和存储器到存储器的配置非常类似。 只是需要注意一点,就是外设寄存器的地址如何获得?比如USART- DR数据寄存器,我们可以这样定义(基址 + 偏移) // 外设寄存器地址 #define USART_DR_ADDRESS (USART1_BASE + 0x04) 然后的配置就跟USART和DMA非常类似,直接上初始化过程: bsp_dma.c #include bsp_dma.h #include stdio.h uint8_t SendBuff ; void USART_Config(void) { GPIO_InitTypeDef GPIO_InitStr
[单片机]
如何在STM32中收发float数据?
实际应用中,我们可能需要两个设备通过串口传输浮点数据: 本篇笔记为了方便演示,使用串口助手模拟其中一个设备,本篇笔记内容如下: 我们创建一个用于管理float类型数据的共用体: union float_data { float f_data; uint8_t by te [4]; }; 数据的流向如: 本次使用串口助手模拟发送设备,省略了第一步,主要看第②、③步。 创建两个共用体变量,用于发送与接收: union float_data rx_float_data, tx_float_data; 收发相关代码: // 公众号: 嵌入式 大杂烩 if(HAL_ UART _Receive(&huart3, rx_float
[单片机]