![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
lucky tiger
要一直前进,一直静下心来学习。
展开
-
STM32 GUIBulider的使用
1、点击生成框2、弄好以后file->save3、生成.c复制到我的程序文件下新建.h路径导进去头文件这些.c里面改名字主函数调用原创 2020-12-21 22:20:40 · 433 阅读 · 0 评论 -
解析 STM32 的启动过程
当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择。如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main函数开始执行。但一个经常会被忽略的问题是:微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来main函数的入口地址在微控制器的内部存储空间中不再是绝对不变的。相信读者都可以回答这个问题,答案也许大同小异,但肯定都有个关键转载 2020-07-28 16:56:45 · 592 阅读 · 0 评论 -
复位到main函数
; Reset handlerReset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0 .原创 2020-07-26 11:06:50 · 691 阅读 · 0 评论 -
UCOS-III知识点总结
1、其中最有用的功能应该是时间片轮转法( roundrobin), 这个是 uC/OS-II 中不支持的,但是现在已经是 uC/OS-III 的一个功能了2、uC/OS-III 被设计用于 32 位处理器, 但是它也能在 16 位或 8 位处理器中很好地工作。3、一共有 2 种类型的实时系统:软实时系统和硬实时系统。硬实时系统中,运算超时是不允许发生的,运算超时会导致严重后果。但是在软实时系统中 , 超时不会导致严重后果4、前后台系统:包含一个无限循环的模块实现需要的操作(后台)。中断处理程序.原创 2020-06-19 08:46:09 · 677 阅读 · 0 评论 -
KEILWIN10安装无法识别ST-LINK
找到安装目录下的F:\install mdk5\ARM\STLink\USBDriver原创 2020-01-03 10:03:29 · 1415 阅读 · 0 评论 -
寄存器高低位
if(a & 0x8000){DIN_H;}else{DIN_L;}//与上最高位1000 0000 0000 00001-16最高位到最低位1是最高位16最低位原创 2019-05-30 10:25:32 · 4264 阅读 · 0 评论 -
ADS8354模拟SPI时序配置
主要函数读写寄存器的模拟时序void write_register(int data){ int i=0; cs_high; cs_low; for(i=0;i<16;i++) { sclk_high; sdi_write((data & 0x8000)>0);//data & 0x800...原创 2019-05-14 20:05:45 · 1135 阅读 · 0 评论 -
ADS8354寄存器读写(赛普拉斯)
总结:ADS8354是一个32位的ADC,但是前16位输出寄存器的值,后16位输出所读数据,所以他是一个16位的ADC.0x10000001 0000 0000 0000int readresult=read_register(0x1000);//读SDOA的数据输出总结:int readresult=read_register(0x1000);//读A while...原创 2019-05-14 16:01:08 · 1148 阅读 · 0 评论 -
STM32实时操作系统
1、裸机和操作系统的区别:裸机是在一个main函数里执行的,除了有中断才会跳到其他地方,否则就会一直按照地址不断加4来执行(为什么是加4呢)。顺序的执行结构就是你可以通过代码找到相应的执行流程。操作系统 main函数当通过函数堆栈切换的跳转到第一个任务之后,第一个任务好像还是默认的,通过优先级的判断优先级高的可以得到优先的执行,就好像有多个main函数在一起执行的假象(并行)。2、操作系统作...原创 2019-03-09 21:31:34 · 6425 阅读 · 0 评论 -
功率谱计算
clcclear allclose alls = load(‘C:\Users\lenovo\Desktop\f4_zy\f4_2_djg\EEG_channel(6).txt’);s=s/1000/220;len =length(s);t = s(2:100001);len =length(t);max = max(t);min = min(t);fs = 1000;fig...原创 2019-01-23 09:07:08 · 2482 阅读 · 0 评论 -
STM32 GPIO
(1)GPIO_Mode_AIN 模拟输入(2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_IPU 上拉输入(5)GPIO_Mode_Out_OD 开漏输出(6)GPIO_Mode_Out_PP 推挽输出(7)GPIO_Mode_AF_OD 复用开漏输出(8)GPIO_Mode_AF_PP 复用推挽输出一、...转载 2018-11-17 15:47:03 · 155 阅读 · 0 评论 -
ADS1299小结
#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)将外设地址强制转化为结构体的指针,然后就可以通过指针GPIOx区访问某个端口中的寄存器原创 2019-05-23 19:44:29 · 6070 阅读 · 0 评论 -
STM32内部ADC的使用
STM32内部自带12位ADC。STM32讲ADC转换分为2个通道组:规则通道组和注入通道组。规则通道组:相当于你正在正常运行的程序注入通道组:相当于中断注入通道的转换可以打断规则通道组u16 Get_Adc(u8 ch){ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 ); ADC_Soft...原创 2019-05-28 11:08:48 · 2572 阅读 · 0 评论 -
PGA112程控增益放大器
增益控制范围选择原创 2019-05-28 21:03:32 · 3009 阅读 · 2 评论 -
STM32JTAG引脚设置
GPIOA-GPIOC是挂载在APB2下面,TIM2-TIM4是挂载在APB1下面,DMA是挂载在AHB下面。GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);PB3 PB4默认为JTAG功能GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);// 改变指定管脚的映射 GPI...原创 2019-06-06 22:55:50 · 5402 阅读 · 0 评论 -
STM32时钟RCC
相比于普通单片机,STM32 拥有复杂的时钟系统,相应的控制器称为 RCC(Reset Clock Controller,复位与时钟控制器)。每个外设都配备了外设时钟的开关,当我们不使用某个外设时,可以把这个外设时钟关闭,从而降低 STM32 的整体功耗。因此,在我们使用外设前,必须要开启相应外设的时钟。可以使用的库函数有:void RCC_AHBPeriphClockCmd(uint32_t ...转载 2019-06-07 10:34:17 · 362 阅读 · 0 评论 -
STM32 IO口主功能复用重定义代码知识总结
1、重映射的时候一般需要配置AFIO2、一旦需要对AFIO寄存器配置时,一定要打开AFIO的时钟(一般在使用外部中断EXTI或外设引脚重定义时)常用普通IO初始化复用功能开启我想使用端口默认的复用功能需要注意的使用默认复用功能前必须对端口位配置寄存器编程。● 对于复用的输入功能,端口必须配置成输入模式(浮空、上拉或下拉)且输入引脚必须由外部驱动注意: 也可以通过软...原创 2019-06-09 11:34:11 · 7340 阅读 · 2 评论 -
GPIO_Mode
一、GPIO配置(1)GPIO_Mode_AIN 模拟输入(2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_IPU 上拉输入(5)GPIO_Mode_Out_OD 开漏输出(6)GPIO_Mode_Out_PP 推挽输出(7)GPIO_Mode_AF_OD 复用开漏输出(8)GPIO_Mode_AF_PP ...转载 2019-07-03 20:32:31 · 467 阅读 · 0 评论 -
I2C双向IO口总结
#ifndef __MYIIC_H#define __MYIIC_H#include “sys.h”#define SDA_IN() {GPIOC-&amp;gt;CRH&amp;amp;=0XFF0FFFFF;GPIOC-&amp;gt;CRH|=0X00800000;}#define SDA_OUT() {GPIOC-&amp;gt;CRH&amp;amp;=0XFF0FFFFF;GPIOC-&am原创 2018-11-17 15:20:40 · 2095 阅读 · 0 评论 -
STM32驱动1602A 8086协议
本来想学I2C发现1602上没有I2C的接口,他是8086并口的就先把它搞了//1602的外设文件#include “lcd1602.h”#include “sys.h”#include “delay.h”#include “stdio.h”void GPIO_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;R...原创 2018-11-16 19:58:56 · 1641 阅读 · 0 评论 -
STM32 FLASH应用
STM32本身没有EEPROM,但是STM32具由IPA(应用程序编程)功能,我们可以把FLASH当作EEPROM使用。具体怎样使用?FLASH里的数据是需要通过SPI来读取的。或者使用DMA。...原创 2018-10-11 10:44:22 · 383 阅读 · 0 评论 -
SPI通过DMA进行数据传输存储器到外设的外部方式
u8 DMA_Data_Buffer[DMA_Send_Length]={}; //开辟一个内存把SPI的数据存到内存中,实现数据从内存传输到外设的DMA传输方式每次中断后都要清除中断标志位,XXX_ClearITPendingBit();一般用在中断函数中清除标志位,XXX_ClearIFlag();一般用在非中断函数中,DMA_Data_Buffer[i] = SPI1_ReadWr...原创 2018-10-01 20:48:59 · 2329 阅读 · 0 评论 -
STM32时钟总结
STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。 HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。 HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时 钟源,频率范围为4MHz~16MHz。 LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。 LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 PLL...原创 2018-09-15 10:17:30 · 573 阅读 · 0 评论 -
SPI外设与USART外设之间通过DMA直接传输初步
选取DMA1选取通道2SPI1USART3根据上面这些配置初始化,参考32例程。void SPI1_IRQHandler(void)USART3-&amp;amp;gt;DR=SPI1-&amp;amp;gt;DR;再直接进行地址映射,把SPI1外设直接映射到USART3主函数大致思路是这样,太菜了不知道行不行...原创 2018-10-01 09:56:54 · 2297 阅读 · 2 评论 -
STM32端口复用和重映射
牢记STM32的单片机每个功能模块有自己的时钟系统,所以调用32的任何模块都要配置时钟,端口复用和重映射也是如此原创 2018-09-20 09:22:30 · 2646 阅读 · 0 评论 -
TXE与RXNE
发送缓冲器空闲标志(TXE) 此标志为’1’时表明发送缓冲器为空,可以写下一个待发送的数据进入缓冲器中。当写入SPI_DR时, TXE标志被清除。 接收缓冲器非空(RXNE) 此标志为’1’时表明在接收缓冲器中包含有效的接收数据。读SPI数据寄存器可以清除此标志。 TXE=1发送缓冲器为空,没有数据可发,就要等待发送缓冲器非空 RXNE=1接受缓冲区非空,没地址存放数据,就需要等待其为空...原创 2018-09-13 16:36:24 · 2888 阅读 · 0 评论 -
SPI与DMA的联系
SPI和DMA的区别 SPI通过MOSI MISO CS SCLK不是应该就可以进行数据传输了吗? 为什么还有SPI下的DMA这种说法? DMA不是数据直接绕过寄存器直接把数据从一个地址传送到另一个地址吗? 有SPI了为什么还要用DMA或者是有DMA了为什么还要用SPI? 或者说可不可以直接用SPI而不用DMA? 直接用DMA而不用SPI? 首先DMA简介: 直接存储器存取(DMA...原创 2018-09-13 16:27:16 · 12192 阅读 · 0 评论 -
SPI FLASH认识
SPI FLASH是什么?SPI串行外围设备接口。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI总线系统是一种同步串行外设接口,可以使MCU与外围设备以串行方式进行通信。nor flash是数据串行通信,nand flash是采用数据并行通信SPI flash是串行通信接口的NOR FLASH。为什么要用SPI F...原创 2018-10-02 15:32:16 · 2176 阅读 · 0 评论 -
STM32学习TFT-LCDFSMC
TFT:薄膜晶体管TFTLCD:薄膜晶体管液晶显示器,在显示屏每个像素点都设置有一个薄膜晶体管。原创 2018-09-20 21:26:19 · 233 阅读 · 0 评论 -
定时器中断采样测阻抗
总结:1、定时器中断中执行尽可能少的操作2、在主函数中进行阻抗的计算3、函数声明的使用#define A(要被代表的东西) 1;就是说我程序里写的A就是1.4、全局变量的使用在某一个外设的函数外定义一个全局变量,在其他位置使用时加上extern即索引,且这个索引的变量是可以对它进行运算的5、STM32是可以使用打印函数的当你写程序测试某一变量的变化时可以用printf函数检查...原创 2018-11-09 14:58:11 · 438 阅读 · 0 评论 -
AD9833产生DDS调试总结
AD9833可以产生正弦波、方波、三角波调试时需要注意的是先确保每根模拟SPI的时钟线存在由于9833的配置是通过读写寄存器配置完成后会一直产生DDS信号,读写时序在配置完成后就会消失,所以测试时用示波器需要尽早测试也可以在32主函数中采用循环来测试temp=Freq*10.7374;这里的系数算法是2^28/晶振大小主函数:...原创 2018-10-26 01:58:10 · 5124 阅读 · 11 评论 -
SPI串口DMA接受不定长数据
SPI串口DMA接受不定长数据,数据发送在总线空闲时产生中断,总线空闲指的是TC标志为高电平,而不是只发送信号每发送完一帧数据后的高电位if(USART_GetITStatus(USART1, USART_IT_IDLE) !=RESET){USART_ClearFlag(USART1,USART_IT_IDLE);temp = USART1->SR;temp = USART1-...原创 2018-10-10 23:02:05 · 2365 阅读 · 2 评论 -
STM32SPI、APB等总线关系总结
时钟图APB1的最高频率是36MHzAPB2的最高频率是72MHz经过总线桥AHB–APB,通过设置分频,可由HCLK得到 PCLK1与PCLK2时钟,而PCLK1和PCLK2一般也默认配置为其最高工作频率36M和72M,PCLK2对应APB2外设,PCLK1对应APB1外设。HCLK :AHB总线时钟,由系统时钟SYSCLK 分频得到,一般不分频,等于系统时钟SYSCLK 系统时钟,...原创 2018-09-28 16:33:11 · 5413 阅读 · 0 评论 -
STM32学习FSMC
FSMC:可变静态存储控制器,简单理解为外部存储器的控制器外部存储器的控制线:地址线(A0-A18)数据线(D0-D15)写信号线(WE)读信号线(OE)片选信号(CS)而TFTLCD是通过8080并口来实现数据读写,8080是通过“读使能(RE)”和“写使能(WE)”两条控制线进行读写操作,6800是通过“总使能(E)”和“读写选择(W/R)”两条控制线进行差别在控制信号M68...原创 2018-09-21 10:00:27 · 2521 阅读 · 0 评论 -
串行通信和并行通信区别STM32
串行通信就是数据的传输是一位一位的,也就是数据线只有一根,像SPI、USART等只有MOSI/MISO,RX/TX。并行通信就是有多跟数据线组成,少见。原创 2018-10-11 11:18:06 · 2784 阅读 · 0 评论 -
存储器知识点
cache是为了弥补主存速度的不足1.按用途分类⑴内部存储器内部存储器又叫内存,是主存储器。用来存储当前正在使用的或经常使用的程序和数据。CPU可以对他直接访问,存取速度较快。⑵外部存储器外部存储器又叫外存,是辅助寄存器。外存的特点是容量大,所存的信息既可以修改也可以保存。存取速度较慢,要用专用的设备来管理。计算机工作时,一般由内存ROM中的引导程序启动程序,再从外存中读取系统程序和应...原创 2018-09-20 21:36:01 · 655 阅读 · 0 评论 -
STM32的数据传输同步通信与
STM32数据传输接受总结: ADC与MCU也就是32之间通过SPI即MOSI MISO CS SCLK同步通信进行数据的接受发送,同步通信与异步通信的区别在于同步通信有时钟线发送不受限制一次传输数据可以很大但是对于发送器和接收器要求比较高,效率高成本也高,异步通信效率较低,我的理解是异步通信每次传输2位8个字节,每个字节之间的间隔相同,但是每2位之间间隔不同会造成时间上的浪费, ...原创 2018-09-12 20:37:12 · 1550 阅读 · 0 评论