STM32
bitwanglu
啊啊啊啊啊啊啊啊啊啊好麻烦啊
展开
-
stm32最小系统
一个以stm32为核心芯片的最小系统包括:1、电源电路;2、复位电路;3、时钟电路;4;下载电路;5、启动模式1、usb 、电源、下载口等3.3或5V。2、复位电路:低电平复位。3、32k晶振,8M晶振,以及内部的好多时钟4、usb,jlink,串口、can。5、boot0,boot1.内部flash、内部存储器、内部SRAM。原创 2017-06-01 10:39:45 · 4132 阅读 · 0 评论 -
STM32.ADC原理
12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。● 12位分辨率原创 2017-07-18 20:36:17 · 3734 阅读 · 0 评论 -
FSMC+SRAM+IS62WV51216
最重要的SRAM读写函数中 ADDR +1还是+2的问题,可以用下面的解释。当 Bank1 接的是 16 位宽度存储器的时候: HADDR[25:1]对应 FSMC[24:0]当 Bank1 接的是 8 位宽度存储器的时候: HADDR[25:0]对应 FSMC[25:0]。以上这是规定。不论外部接 8位/16 位宽设备, FSMC_A[0]永远原创 2017-08-17 17:43:59 · 1763 阅读 · 0 评论 -
STM32串口第一个字节丢失问题的分析过程
STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功,使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据0x01 0x02 0x03 0x04..接收端收到的数据为:0x02 0x03 0x04,第一个数据丢失。换成发送别的数值的数据,如0x06 0x0ff,则接收到0x0ff,0x06丢失。错误依旧。转载 2017-08-21 17:14:32 · 915 阅读 · 0 评论 -
printf 函数支持
printf 函数支持这段引入 printf 函数支持的代码在 usart.h 头文件的最上方,这段代码加入之后便可以通过 printf 函数向串口发送我们需要的内容,方便开发过程中查看代码执行情况以及一些变量值。这段代码不需要修改,引入到 usart.h 即可。这段代码为://加入以下代码,支持 printf 函数,而不需要选择 use MicroLIB#if 1#p原创 2017-08-29 21:24:37 · 921 阅读 · 0 评论 -
C语言之栈和堆(Stack && Heap)的优缺点及其使用区别
一、前言 直到现在,我们已经知道了我们如何声明常量类型,例如int,double,等等,还有复杂的例如数组和结构体等。我们声明他们有各种语言的语法,例如Matlab,Python等等。在C语言中,把这些变量放在栈内存中。二、基础 1、栈 什么是栈,它是你的电脑内存的一个特别区域,它用来存储被每一个function(包括mian()方转载 2017-09-28 16:52:57 · 1039 阅读 · 0 评论 -
STM32、串口、一键下载
串口这个让我研究了两天。STM的串口是USART是可以同步也可以异步,一般用异步。可以看出 只有将串口拉低,才能进行传输。另外 串口传输是一位一位传的,可以通过中断函数判断。每发一位,中断一次。程序里对串口操作1、GPIO时钟使能,USART时钟使能2、串口IO模式,一个模拟输入,一个复用推挽输出。3、USARTinit: 96、n、8、1等设置原创 2017-06-09 13:44:05 · 2761 阅读 · 0 评论 -
STM32串口协议
目前我总结了两种串口通信时用到的串口协议程序。均学习的原子哥的。一、定义某个字符为一次接收数据完成,如/n/r。二、定义两个字符接收时间间隔,如10ms。超过即为第二次接收。一、程序示意:二、程序示意、#include \"delay.h\"#include \"usart2.h\"#include \"stdarg.h\" #inclu原创 2017-09-12 16:53:14 · 2604 阅读 · 0 评论 -
STM32f103zet6,综合大实验。
1、存储部分STM32F103ZET6512KB 片内FLASH(相当于硬盘),64KB片内RAM(相当于内存) ,片内FLASH 支持在线编程(IAP).外部:SPI-FLASH,8MB(相当于硬盘)。FSMC-SRAM,1MB(相当于内存)。原创 2017-09-12 20:57:43 · 3196 阅读 · 0 评论 -
ucosII,LED0LED1俩任务切换过程,最简单的例子说明。
//LED0任务void led0_task(void *pdata){ while(1){LED0=0;delay_ms(80);LED0=1;delay_ms(920);};}//LED1任务void led1_task(void *pdata){ while(1){LED1=0;delay_ms(300);LE原创 2017-09-20 20:02:45 · 1907 阅读 · 0 评论 -
uCOS-II中的任务切换-图解多种任务调度时机与问题——转自apollius@格子间
uCOS-II中的任务切换-图解多种任务调度时机与问题【@.1 任务调度时机】之前的一篇文章分析了具体的uCOS-II中的任务切换机制,是从函数调用的角度上分析的。这次我具体从整个程序运行的时间上来看,分析多种任务调度发生的时机。以下所有图片均可点击放大观察。所有图中红色箭头表示中断级的任务切换,蓝色箭头表示任务级的中断切换。1.仅有一个任务,这种情况最简单。假设时钟节转载 2017-07-20 16:59:25 · 417 阅读 · 0 评论 -
STM32,SPI原理
今天学习SPI原创 2017-06-15 13:36:07 · 313 阅读 · 0 评论 -
STM32,IIC总线。
IIC总线这块很难,确实研究了一段时间。基础知识、教程等就不写了,反正也是给自己看。其他都在手册里。总体上看需要几部分:1、选取端口设置成IIC总线,GPIO输出。并拉高。 预定义I2C_SCL I2C_SDA I2C_SDA_H I2C_SDA_L I2C_SCL_H I2C_SCL_L等。2、编写函数,SDA输入输出,主要是配置GPIO模式。3、根据原创 2017-06-15 12:39:02 · 1456 阅读 · 0 评论 -
stm32,中断
stm32,有84个中断,16个内部+68个外部。其中不仅指外设部分。还有16级可编程中断优先级,使用中断优先级设置的8bit中的高4位。68个终端通道已固定分配好,每四个通道构成一个32位优先级寄存器。68个通道有17个32位优先级寄存器。优先级分为:抢占式优先级(可嵌套)和响应式优先级(不可嵌套,按顺序执行)一个通道的优先级寄存器有四位。四位分为5组:第0组:所有4原创 2017-06-05 10:38:45 · 338 阅读 · 0 评论 -
stmxxxx,GPIO
输入:输入浮空、输入上拉、输入下拉、模拟输入输出:开漏输出、开漏复用功能、推挽输出、推挽复用功能两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH) 端口输入数据寄存器(GPIOx_IDR)端口输出数据寄存器(GPIOx_ODR)原创 2017-06-01 16:26:55 · 261 阅读 · 0 评论 -
STM32,定时器
TIME1,TIME8高级定时器TIME2-5 通用定时器TIME6,TIME7基本定时器。对通用定时器使用,TIM2 1、开启TIM2时钟2、初始化定时器参数3、定时器中断参数设置4、中断优先级设置5、中断使能6、中断处理函数原创 2017-06-06 16:02:03 · 274 阅读 · 0 评论 -
stm32f103zet6时钟
voidRCC_HSE_Configuration(void) //HSE作为PLL时钟,PLL作为SYSCLK { RCC_DeInit(); /*将外设RCC寄存器重设为缺省值 */RCC_HSEConfig(RCC_HSE_ON);/*设置外部高速晶振(HSE) HSE晶振打开(ON)*/ if(RCC_WaitForHSEStartUp() == SUCCESS原创 2017-06-01 11:34:09 · 2708 阅读 · 0 评论 -
stm32,按键
按键程序主要有以下几部分。1、key.h文件,主要包括include:xxxxxx.h以及 按键GPIO端口的命名。2、key.c文件,主要包括,key_init。设置按键的GPIO,速率,输入模式等。pin的初始状态需要设置。以及按键的响应函数,扫描、去抖等。3、led.h文件,主要包括includexxxxx,以及.c文件中的函数命名。4、led.c文件,主要包括GPIO初始原创 2017-06-02 16:08:06 · 343 阅读 · 0 评论 -
STM32,PWM
pwm最重要的就是初始化设置,其中包含的库函数1、结构体声明,GPIO、定时器、时钟通道2、开启时钟:GPIO、定时器,复用3、GPIO初始化、定时器初始化、4、定时器重映射到管脚5、定时器的功能模式(PWM)初始化6、使能定时器预装载定时器7、使能定时器外设原创 2017-06-07 11:35:47 · 354 阅读 · 0 评论 -
STM32,IIC,SPI,CAN,485,232
这几类通信均为串行通信协议。IIC协议,可以用普通IO口模拟,两根线,一个SDA 一个SCL。半双工。通过两根线的时序,实现输入输出。SPI:四根线,全双工,输入,输出,时钟,片选。CAN总线:CAN是一种 ISO 国际标准化的串行通信协议, 是 1986 年德国电气商博世公司开发出面向汽车开发出来的,此后,CAN通过 ISO11898 及 ISO11519 进原创 2017-06-19 10:32:54 · 1001 阅读 · 0 评论 -
us/osii
多任务与处理器的关系,调度。处理器中俩指针PC和SP。PC指向任务代码,SP指向任务堆栈。将多任务进行调度。就是实时多任务操作系统。完整代码包含:•任务代码(程序)•任务的私有堆栈(用以保护运行环境)•任务控制块(提供私有堆栈也是虚拟处理器的位置)任务的几种状态。任务控制块(TCB)程序在多任务中for(;;)无限循环。空原创 2017-06-28 10:59:38 · 701 阅读 · 0 评论 -
stm32f103zet6开篇学习
STM32f103zet6 开篇原创 2017-05-31 15:44:02 · 2540 阅读 · 0 评论 -
基于STM32原子战舰板内存管理源码详解
走到今天,已经开始涉及到计算机核心一点的东西了---内存管理。通过本实验的学习,能够较为深刻体会到“指针是c语言的灵魂”这句话的分量。自然对c语言的能力要求就高很多了。 最近有点乱,但是有关嵌入式系统的学习不曾怠慢过。本文是基于原子老师的c源码,自己的学习的心得,只是对源码作出自己的学习理解,同时也插补了一些涉及到的c语言知识。贴出本文不为别的,一来但愿能有有缘人看到本文,提出指转载 2017-10-09 20:54:57 · 3053 阅读 · 0 评论