随笔分类 - stm32成长计划
摘要:在做项目时,碰到一个问题被困扰很久,采集交流电均值时会出现结果为零的情况,但是我设计的是采集一个周期数据的均值,因此是不可能为零的。 随着不断深入寻找错误,发现是因为我采用的模板晶振为8MHZ,而我使用的板子外部晶振为25MHZ。 出现这个问题的主要原因是,之前一直使用的是F103的板子,手册上明确
阅读全文
摘要:学FreeRTOS时,每次打开函数列表都一脸懵逼?根本不知道这什么prv,v,ux是什么意思,所以还是要把它理清一下: 命名规则 u :代表unsigned。 s :代表short。 c :char。 所以类似uc,us类的变量就是unsigned char,unsigned short,分别对应u
阅读全文
摘要:stm32—LCD外设详解(5510) 图像处理,不会用LCD怎么行。本实验基于正点原子战舰开发板重新编写,正点原子的代码写的很好,但奈何本新手看了表示一脸懵逼,因此重新编写,将代码简单化,去除操作系统以及兼容性等干扰项。 写命令函数 写数据函数 读LCD数据函数 这个需要采用volatile防止编
阅读全文
摘要:SysTick定时器详解 关于SysTick定时器,如果想从STM32官方手册去寻找该定时器,会发现并没有该定时器的相关介绍,仅有库函数介绍。由此可以看出SysTick并不是意法半导体公司设定的。从Cortex M3权威指南可以找到该定时器的详细介绍,由此可以知道SysTick定时器是在ARM芯片当
阅读全文
摘要:外部中断实验 1. 外部中断首先需要进行中断初始化以及使用NVIC设置中断优先级 2. 设置中断响应函数 到这里中断的配置以及完成,接下来需要配置中断响应函数: 首先是中断线0的响应函数: 中断线2的响应函数: 中断线3的响应函数: 中断线4的响应函数:
阅读全文
摘要:串口中断函数详解 ARM cortex_m3 内核支持 256 个中断(16 个内核+240 外部)和可编程 256 级中断优先级的设置。 STM32支持的中断共为84个(16个内核+68个外部),和16级可编程中断优先级的设置。 AIRCR是NIVC配置中一个关键的寄存器,由于STM32有很多中断
阅读全文
摘要:1、首先找到环境变量面板,本文会将下图中被选中路径以下的所有路径重新设置: 2、在系统变量中新建一个变量名为path1,变量值设置为要重新设置的所有路径,路径与路径之间用“;”冒号隔开,最后一个路径不需要以冒号结尾。 3、设置好以后,将%path1%作为路径放入PATH当中,这样就不会再出问题啦
阅读全文
摘要:static __INLINE uint32_t SysTick_Config(uint32_t ticks) { // 判断 tick 的值是否大于 2^24,如果大于,则不符合规则 if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); // 初始化re
阅读全文
摘要:出错是因为你当前运行的文件调用到了core_cm3.h,而core_cm3.h文件中包含了有IRQn_Type类型名,但是此类型名是在“stm32f10x.h”中定义的,所以你需要在当前文件包含#include "core_cm3.h"之前先包含#include "stm32f10x.h"记住,两个
阅读全文
摘要:这种情况一般是use microlib这个选项没有勾选,勾选一下就好了
阅读全文
摘要:SPI协议: SPI1挂载在APB2总线上,SP12和SPI3挂载在APB1总线上。 相对于I2C来说,SPI的传输速率要高得多,所以低速传感器可能用I2C,但是高速传感器用SPI还是用得非常多的。 I2C为半双工,因为只有一根线,而SPI有两根总数据线,一根可以接收数据,一根发送数据,为全双工通信
阅读全文
摘要:DMA:Data Memory Access,直接存储器访问。主要功能是可以把数据从一个地方搬到另外一个地方,而且不占用CPU。 DMA1:有7个通道,可以实现 P->M,M->P, M->M DMA2:有7个通道,可以实现 P->M,M->P,M->M DMA初始化结构体 一、数据从哪里来,要到哪
阅读全文
摘要:HSE时钟 高速外部时钟来源为无源晶振(4-16M),通常为8M。 HSI时钟 高速内部时钟来源为芯片内部,大小为8M,当HSE故障时,系统时钟会自动切换到HSI。 一般配置系统时钟的流程为将HSE时钟8M进行9倍频得到72M。当HSE故障时,切换到HSI为8M,这个时候系统相当于瘫痪。 锁相环时钟
阅读全文
摘要:在学习正点原子的oled时,画点函数和清屏函数以及OLED_GRAM[128][8]这个定义让我一直想不通,128X64的分辨率。分为八页,所以是128X8,但为什么二维数组定义为[128][8]这里让我有点想不通。 偶然间看到了这个帖子:http://openedv.com/thread-8472
阅读全文
摘要:首先是看开发指南有一段话不能理解: OLED_GRAM[128][8]中的 128 代表列数(x 坐标) ,而 8 代表的是页,每页又包含 8 行,总共 64 行(y 坐标) 。从高到低对应行数从小到大。比如,我们要在 x=100,y=29 这个点写入1,则可以用这个句子实现:OLED_GRAM[1
阅读全文
摘要:1、使能定时器3和相关IO口时钟。 使能定时器3时钟:RCC_APB1PeriphClockCmd(); 使能GPIOB时钟:RCC_APB2PeriphClockCmd(); 2、初始化IO口为复用功能输出。函数:GPIO_Init(); GPIO_InitStructure.GPIO_Mode
阅读全文
摘要:I2C物理层特点 1、它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个I2C通讯总线中,可连接多个I2C通讯设备,支持多个通讯主机及多个通讯从机。 2、一个I2C总线只使用两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线 (SCL)。数据线即用来表示数据,时钟线用于数据收
阅读全文
摘要:学习stm32已经很长时间了,打算把以前做过的一些小东西整理一下,写出来,以输出倒逼输入,让自己知道有哪些东西是一知半解的。 跑马灯 首先是led.h文件 前两行和最后一行是一个框架,防止头文件被重复加载 然后是led.c文件 最后是main文件 蜂鸣器 首先是beep.h文件 然后是beep.c文
阅读全文