
单片机
shaynerain
欢迎交流shaynerain@163邮箱
展开
-
Keil 执行本地程序&脚本&命令
我的方法直接在Options->User->Run中填入命令,在shell中可以运行的命令,基本都可以两个脚本在工程目录下官方参考启动外部命令https://www.keil.com/support/man/docs/uv4/uv4_ca_start_external_tools.htm关键词含义https://www.keil.com/support/man/docs/uv4/uv4_ut_keyseque...原创 2021-08-02 10:32:17 · 3225 阅读 · 0 评论 -
串口数据传输过程
一次数据包括起始位、数据位、停止位一般情况:起始位1bit数据位8bit停止位1bit一共10bit,如下图所示每位的时间根据波特率来计算1bit占用时间 = 1/波特率上图中使用10000比特率,1bit时间为1/10000 = 0.1ms一次数据时间为10*0.1ms = 1ms和逻辑分析仪抓到的一致其中起始位从1到0下降沿开始,为低停止位为高...原创 2021-08-02 10:29:47 · 679 阅读 · 0 评论 -
单片机调试
使用以下方法可以打印函数名称,当前所在行数,加快调试过程支持printf后可以使用以下宏定义代替printf#define APP_ERROR(fmt, ...) printf("[ERROR][%s,%d]: " fmt "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__)#define APP_TRACE(fmt, ...) printf("[TRACE][%s,%d]: " fmt "\n", __FUNCTION__, __LINE__, #.原创 2020-10-30 10:28:42 · 570 阅读 · 0 评论 -
SDCard协议&理解
容量分类SDSC:最大2G SDHC:大于2G,最大32G SDXC:大于32G,最大2T读写速度读写速度一半不一致,可根据这个特性调节底层接口速度,来提高效率Class 0,没有速度要求 Class 2,正常模式下,最低2M Class 4,正常模式下,最低4M Class 6,正常模式下,最低6M Class 10 告诉模式下,最低10M我两次没得SD卡速度不一样,第一批C10,第二批C4总线协议三种传输:Command:命令传输 Response:对上次发送命原创 2020-09-01 22:36:33 · 760 阅读 · 0 评论 -
STM32 + FreeRTOS 的一些理解
中断管理问题FreeRTOS的中断管理是可配置的,有专门的寄存器用来配置哪些中断是可被管理,那些是不可被管理,该寄存器设置阈值,小于阈值不被管理,大于阈值被管理,好处在于某些紧急中断不应该被管理,应该打断系统调度进行及时响应,并且ISR中不能出现系统相关函数时基问题对于HAL、OS都需要时基HAL时基用来管理HAL API,提供与系统无关的延时、超时等操作;OS时基是基础,且强制是systick,系统时钟源如果使用同一个则会出现,如果在终端服务函数中调用了HAL_Delay().原创 2020-07-03 18:11:14 · 935 阅读 · 0 评论 -
单片机堆栈理解
栈Stack:存储程序中函数内部变量,参数,被系统直接管理,如果函数内部参数比较多,可加大栈容量堆Heap:程序员主动使用,malloc函数进行申请,如果不进行管理可直接设置0,不影响正常运行...原创 2020-07-03 18:09:39 · 557 阅读 · 0 评论 -
Keil编译后生成信息详解
优化等级0Program Size: Code=24628 RO-data=376 RW-data=160 ZI-data=10136优化等级3Program Size: Code=18872 RO-data=376 RW-data=160 ZI-data=10136Code指代码所占用的空间,存在Flash中,大小主要和代码量有关,同时受优化等级影响,优化等级越高,占用空间越小RO-data指Read Only data,只读数据占用空间,不能写,只能读,一般是定...原创 2020-07-03 18:08:45 · 1549 阅读 · 0 评论 -
STM32驱动AD7190
这篇介绍的时高精度、速度AD芯片AD7190的驱动,针对STM32,并且使用的时HAL库,改成其他库也很容易,只需要把相关通讯部分改了就行。我在上网找到的中文数据手册:https://shaynerain.com/shaynerain/file/AD7190_cn.pdfSPI设置,首先看时序图 时序图中已经包含了很多信息,所以SPI配置如下,其中时钟最高为5M,在数据...原创 2018-12-09 12:10:22 · 7279 阅读 · 5 评论 -
C语言&单片机不定参数个数的函数定义
在学习使用C语言的时候都会告知main函数是可以接入多个参数的,那么问题来了,不定参数个数的函数如何定义的呢,它是否可以在单片机中使用呢定义和使用//首先引用#include <stdarg.h>//定义,count是参数个数需要传入具体的参数,可循环判断取多少个值是结尾void move(int count,...){ int value1...原创 2020-03-25 00:14:11 · 977 阅读 · 0 评论 -
MPU6050配置中断读取数据
MPU6050相关寄存器写满数据后产生数据中断,主机检测外部中断用于读取数据,如此节省CPU资源void MPU6050_Init(void){ int i = 0, j = 0; //加入中断初始化 EXIT_B5_Init(); //在初始化之前要延时一段时间,若没有延时,则断电后再上电数据可能会出错 //没试...原创 2018-11-27 21:48:35 · 9077 阅读 · 4 评论