STM32
荒草人生
上天给了我一把紫青宝剑,会有一个心爱之人将其拔出。
展开
-
key组合按键,长短按键,连续按键 识别方案
假如我们有30个按键,要实现识别所有按键的组合短按,组合长按,组合连续按,等等,按规则写出来非常麻烦,我们使用宏定义,整型变量按位检测就很方便。原创 2022-07-26 11:47:02 · 1606 阅读 · 1 评论 -
STM32 RC522串口驱动程序 (简单直接)
rc522作为使用非常多的读写卡芯片,使用SPI芯片读写应用已经非常广了。但有些时候我们只有串口可以使用,或者我们觉得串口使用更加方便,那么就必须要编写串口的驱动程序。不过很难找到可以直接使用的串口程序。所以在此将我这边写好的串口驱动写好如下:直接上代码下面是RC522.C的驱动文件。支持读写卡号8位数据。rc522用的是stm32 的串口3,调试显示是串口1;#include "rc522.h"#include "delay.h"/////////////////////////////////原创 2020-10-27 17:58:22 · 7902 阅读 · 7 评论 -
stm32 最小的boot 仅一个main文件 用作更新
通常boot的功能时用来引导app区程序运行的,对于小的项目这仅仅是一个跳转程序。当然还有一个重要的功能,就是用作程序区域的更新升级。所以下面的方案就只针对引导程序区和更新程序区而设计,仅用一个main 文件实现该功能。上代码#include "stm32f10x.h"#define APP_CNT (100)/* 基地址和分区大小 */#define ADDR_START (0x08000000)#define SIZE_FLASH (256*1024)#define SIZE_BOOT原创 2020-10-26 03:39:55 · 266 阅读 · 0 评论 -
STM32 rtc唤醒 低功耗待机模式 避免iwdog看门狗方案
我们知道stm32f103有很好的低功耗模式,可以使用rtc的闹钟用于定时的唤醒。但很难在IWDOG的使用情况下,设置低功耗。我为了处理这个问题,我们需要设置掉电标志位,因为stm32复位重启后看门狗会失效,在配置看门狗前去检查低功耗标志是否使能,如果使能则直接进入低功耗。从而避免了看门狗的重启困扰。BKP区域用于掉电标志非常安全合适。直接上代码(测试板子stm32f103)首先是rtc.c文件,包含掉电备用数据读写(BKP区域用作设置掉电标志位最合适了,有20个16位寄存器),RTC时钟初始化函数,时原创 2020-10-26 03:20:28 · 2061 阅读 · 0 评论 -
STM32 内部flash 数据掉电存储
说明对STM32内部的flash进行结构体数据存储,和读取。方便小型工程的数据掉电保存。在初次使用的时候进行自动初始化默认值,后续掉电就不会再初始化了。直接上代码代码中的DATA_STORE需要自行定义结构体变量。#include "store.h"#define FLASH_START 0x0803D800//flash起始地址extern STORE_SHEET DATA_STORE;//数据存储结构体extern u16 crc_cal_by_byte(const u8* ptr, u原创 2020-10-22 12:13:27 · 5862 阅读 · 0 评论 -
stm32大小端转换宏定义函数(包含uint64_t转换)
大小端问题:提示:这里简述项目相关背景:stm32f03上面编程使用的是小端模式,但网络传输使用的是大段形式,我们需要使用大小端转换宏转换成大端。转换宏定义如下:#include “stdint.h”#define sw16(A) ((((u16)(A) & 0xff00) >> 8) | (((u16)(A) & 0x00ff) << 8))#define sw32(A) ((((u32)(A) & 0xff000000) >>原创 2020-10-12 18:04:06 · 3570 阅读 · 0 评论 -
关于stm32 卡死在串口接收中断中的处理方法。卡死原因是串口自带的BUG出现USART_FLAG_ORE标志位无法清除。
前端时间遇到正常使用的串口一直卡死在USART_FLAG_ORE标志位处,有一定概率发生这个,但在发生后,就会一直进入中断。按照网上的方法做了清除标志位处理,但结果还是解决不了。下面是之前写的代码连接,https://blog.csdn.net/qq_42074368/article/details/103404573通过调试发现,中断一直进入这个地方 if(USART_GetFl...原创 2020-01-18 16:21:55 · 23961 阅读 · 5 评论 -
STM32 定时器与延时函数
上代码首先头文件timer.h#ifndef __TIMER_H_#define __TIMER_H_#include "stm32f10x.h" void TIM2_init(u16 arr,u16 psc);__weak void Timer2_ISR(void);u32 F420_TICK(void);_Bool F420_CHECK_TIMEOUT(u32 ...原创 2019-12-05 16:34:00 · 1506 阅读 · 0 评论 -
STM32 5个串口初始化,前三个DMA操作,自制队列缓存机制,测试稳定
直接上代码:首先头文件uart.h#ifndef _IOT_UART_H_#define _IOT_UART_H_#include "stm32f10x.h" #define buff 5#define blen 350typedef struct { char DMA_Buffer[blen]; char RxBuffer[buff][blen]; char ...原创 2019-12-05 14:51:49 · 3211 阅读 · 0 评论 -
STM32 CAN 配置 过滤器测试可用
//======================================================================================//使用32位的掩码模式,但只使用了后16位作为ID 。发送的话我们直接使用32位的扩展ID:过滤器的ID和掩码MASK需要做按位平移 CAN_FilterInitStructure.CAN_Fi...原创 2019-12-04 15:28:52 · 981 阅读 · 0 评论