从零开始学习stm32
本专栏介绍从零开始学习stm32的历程,从最简单的流水灯开始到文件系统最后到操作系统。
shop_ping
这个作者很懒,什么都没留下…
展开
-
基于stm32f103zet6之UC/OS_II的学习2(初步分析OS--点灯大法)
现在开始仔细分析,整个点灯大法是如何实现的。一、硬件初始化。在我这里是指对GPIO进行初始化 LED_GPIO_Config(); //LED端口初始化具体的配置就不多说了。二、操作系统的初始化 OSInit();接着我们看看这里面具体做了什么:void OSInit (void){ OSInitHookBegin();原创 2013-05-11 20:06:29 · 2995 阅读 · 0 评论 -
基于stm32f103zet6之UC/OS_II的学习1(初步移植OS--点灯大法)
很久很久都没有写博客了,最近真是比赛一个接着一个,都需要参加,所以stm32的学习一直停滞不前,趁着最近准备模块的时间开始着手ucosII的学习,没办法呀,学习还是要继续的。。现在开始正式学习,今天的要求不高,只是分析一下移植的时候需要注意的问题,暂且不研究内核代码!(代码移植参照着ST官方源代码)也就是资源里面名为 取AN-1018.pdf的文档。代码这里可以下载http://d原创 2013-05-10 19:53:40 · 4306 阅读 · 0 评论 -
基于stm32f103zet6之DS18B20的学习
任何一个DS18B20其内部64位ROM用于存储位移的芯片ID(这就为我们的多点采集提供了极大的方便),我使用3pin封装的芯片,值得注意的是:DS18B20使用一根数据线一根地线也能正常工作,也就是VCC并不是必须的,什么原因呢?因为DS18B20在内部有一个寄生电容,当我们的数据线的电压范围在3.3--5V之间的时候,他会转存为power,所以当我们外部断电之后,这个power就为IC提供了电原创 2013-04-16 16:49:01 · 9288 阅读 · 2 评论 -
基于stm32f103zet6的FAT16文件系统学习4(管理SD卡,读取图片,字库)
好几天没有写博客了,这几天都在忙挑战杯的事情,由于某些不和谐因素,昨天才开始准备今天的挑战杯答辩,虽然不知道结果是怎样的,但是个人感觉创新点还是有的,就是主评委老师拽着我们这个消费对象来说事,过去了就不再想了,也不知道能不能进入省赛,但是学习还是要继续的,今天总结的这个实验是实现从SD卡里面读bmp图片,bin图片,同时在将我制作的字库存放在SD卡中,从里面读取所需要的汉字,虽然之前早就实现了bm原创 2013-04-12 20:21:23 · 7019 阅读 · 6 评论 -
基于stm32f103zet6的FAT16文件系统学习3(初步分析ff9a)
文件系统分析了两天,自己都不知道入没入门,现在就把这两天分析的结果总结一下吧!一、res = f_mount(0,&fs);首先是挂接根文件系统,为什么要挂接根文件系统内容?因为根文件系统里面会对我们的SD卡进行初始化,除此之外f_mount函数可以实现在FatFs模块上注册/ 注销一个工作区。 在使用任何其他文件函数之前,必须使用该函数为每个卷注册一个工作区。要注销一个工作区原创 2013-04-07 10:52:26 · 6311 阅读 · 1 评论 -
基于stm32f103zet6的FAT16文件系统学习2(初步移植ff9a)
直接上移植ff9a文件系统的移植步骤了,有些地方不了解,比如ff.c文件里面的一些函数,看得比较糊涂,但是那不影响我们的移植,先让文件系统跑起来,然后继续拧分析比较好。OK,不说废话了。一、官网下载ff9a源代码,解压出来有doc和src两个文件夹。在我们的SD实验里面的project下面建立一个名为FAT的文件夹,然后将src里面的diskio.c、diskio.h、ff.c、ff.h、in原创 2013-04-06 09:34:04 · 3263 阅读 · 0 评论 -
基于stm32f103zet6的FAT16文件系统学习0(读SD卡扇区)
SD卡已经看了两天了,主要是因为测试出来的卡容量不对,所以一直找原因,最终还是发现了,总比不过是单位上面出现了问题,或许是之前没有接触到SD的缘故吧,所以对其中的一些寄存器很不了解,一切都是重新开始,对照这寄存器手册,理解程序,修改程序。一步步还是总结一下!首先关于SD卡的协议是有必要了解的,我今天花了一上午的课堂时间来理解这个SD卡的协议,就是基于这个文档的,这个文档很适合入门SD协议的(个原创 2013-04-05 16:32:19 · 5243 阅读 · 0 评论 -
基于stm32f103zet6的FAT16文件系统学习1(初识FAT16)
有了之前读写block的基础之后,准备弄个文件系统,之前没有接触过这东西,所以有很多都晕晕的,但是看到fat的源代码之后还是挺有信心的,因为之前一直过uboot,所以这个文件当然是小巫见大巫了。首先来分析一下对应我的SD的FAT16的相关信息吧(暂且就这么称吧,因为我也不是很了解)。一、引导扇区段拿比较简单的FAT16文件系统来分析,格式化为FAT16,然后使用Winhex软件打开我的磁盘原创 2013-04-05 14:59:44 · 5377 阅读 · 0 评论 -
基于stm32f103zet6之硬件SPI的学习
有几天没有更新博客了,主要是因为这几天都在捣鼓彩屏和触摸屏,分别使用FSMC和模拟IO来实现功能,又因为这块屏有些问题,所以、就网购了一块屏,估计今天能到了,今天准备学习下硬件SPI,之前使用IO模拟SPI实现了对DS1302的访问,下一步准备学习SD卡的,在论坛里面查看了下资料,发现如果使用软件模拟SPI来进行SD的通信话,会极大降低对SD卡的读写速度,但是,如果使用SD模式或者说使用硬件SPI原创 2013-04-03 19:44:30 · 8745 阅读 · 0 评论 -
基于stm32f103zet6之nor flash的学习
有时候,我们需要保存少量数据,但是用外扩的ROM又觉得不方便,这时候自然就想到了芯片内部是否自带flash(闪存),据我了解,stm32内部的应该是nor flash,因为如果是nand flash的话,肯定速度是跟不上的。不过如果是想看关于存储器的区别,建议参考这个博文http://blog.csdn.net/king_bingge/article/details/8742708。一、这次主原创 2013-03-31 13:59:43 · 4556 阅读 · 0 评论 -
基于stm32f103zet6之使用FSMC驱动TFT的学习
在完成IO驱动彩屏的试验后,就准备着手使用FSMC来驱动彩屏,先了解一下预备知识一、所谓的FSMC机制简单介绍FSMC在这篇博文里面很清楚,推荐一下 http://blog.csdn.net/king_bingge/article/details/8718566然后还有就是这篇学习笔记,也还行 http://www.cnblogs.com/hduxyc/archive/2011/05/原创 2013-03-26 13:44:11 · 17963 阅读 · 3 评论 -
基于stm32f103zet6之我的彩屏
手上这块彩屏是在同学那里搞来的,因为芯片手册丢失了,在网上东拼西凑,把这块彩屏捣鼓了一天,终于是点亮了,准确来说,我终于是把它的引脚弄清楚了,把引脚情况总结一下吧,怕忘记了。P25 LCD_WR PF2 P26 LCD_RS PF1 P27 LCD_CS PF0 P32 LCD_RD PA8 P33 LCD_RST PA11原创 2013-03-22 21:59:35 · 2713 阅读 · 1 评论 -
基于stm32f103zet6之红外遥控解码的学习
不得不吐槽一下,我真的好挫,真的真的非常差劲儿。。。一、红外遥控解码部分从昨天开始整,一直到现在才解码成功!中途遇到了不少问题,结果出来后还是觉得有必要总结一下,唉!1、首先我又是怀疑我硬件电平不兼容德问题,后来给接上3.3V的电压,还是不行,好吧,算失败了,在网上查阅了比较多的帖子,也找了比较多的资料,最终还是决定用原本那个生了锈的遥控来解码!2、然后准备参照着原来51的思想来移植代原创 2013-03-19 20:59:21 · 12482 阅读 · 4 评论 -
基于stm32f103zet6的定时器的学习3(定时器产生4路PWM)
定时器TIM3产生四路PWM波输出。首先介绍一下PWM吧,算是给自己充电,脉冲宽度调制(PWM),是英文“Pulse Width Modulation ”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。一、这个程序的主函数相当简单:/*******由于没有做外设测试的程序是:按键PA0仅一个LED灯****原创 2013-03-18 14:17:23 · 9063 阅读 · 8 评论 -
基于stm32f103zet6的定时器的学习2(定时器上溢)
使用普通定时器2来产生中断,计数方式:增计数!一、编程配置部分1、首先进行中断配置,定时器中断肯定要配置的,代码如下:void TIM2_NVIC_Configuration(void){ NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0原创 2013-03-17 19:50:53 · 5647 阅读 · 8 评论 -
基于stm32f103zet6的定时器的学习1(理论知识)
之前就听到网友说定时器这部分比较复杂,难搞,实验室里有个同学也搞了一段时间,不过它属于哪种专研型的人!学着学者,我也来到了定时器这章。在网上查看了一下,也翻阅了一些书籍,高级定时器,通用定时器,普通定时器这三种就从通用的开始学吧!一、首先还是将定时器框图分解一下吧,那么令人窒息的框图着实让人恐怖!虽然窒息,但是还是有必要贴上去!对上面框图中的寄存器名字解释如下TIM原创 2013-03-17 17:18:25 · 5617 阅读 · 1 评论 -
基于stm32f103zet6的看门狗学习
看门狗,这个东西在哪都能看见,关于其中简单介绍在我的另一篇博文中有的,那是关于arm11的,不过大体一样http://blog.csdn.net/king_bingge/article/details/8510713一、首先就是独立看门狗直接上操作流程吧1、三个比较重要的寄存器:键值寄存器(IWDG_KR )、预分频寄存器(IWDG_PR)、重载寄存器(IWDG_RLR)向IWDG原创 2013-03-17 11:08:28 · 2412 阅读 · 0 评论 -
基于stm32f103zet6的DS1302学习
由于硬件出了问题,也就是外部低速晶振没用,震不起来,然后查看了网上的帖子,STM32的RTC果然口碑不怎么样,所以果断换DS1302,在移植的过程中还算顺利,记录下来吧,也算对自己的总结吧!1、所谓的DS1302这里面也指明了简单的SPI协议然后就直接上代码了,注释很详细的!基本实现单行注释1、主函数main#include "stm32f10x.h" #i原创 2013-03-16 10:40:13 · 8733 阅读 · 7 评论 -
基于stm32f103zet6的RTC学习
RTC配置一、秒中断的配置,RTC就是一个定时器而已,没什么大不了的!1、NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_PriorityGroup,: specifies the priority grouping bits length. This parameter can be one of the following原创 2013-03-13 21:36:38 · 3324 阅读 · 1 评论 -
基于stm32f103zet6的DMA学习
stm32内部集成的ADC介绍一、参考电压的范围为 /*2.4V≦ V ≦3.6V所以它的输入模拟电压范围0 二、需要测量负电压或测量的电压信号超出范围时,要先经过运算电路进行平移或利用电阻分压。三、我采用的是51单片机上面的10k的电阻来模拟输入四、规则通道和注入通道/*所谓规则,那么就是按常理出牌的,我们可以称之为正常的通道,那么与之对应的是注入通道,就是在原创 2013-03-12 19:51:44 · 4949 阅读 · 1 评论 -
基于stm32f103zet6的外部中断学习
一、关于中断中的结构体EXTI_InitTypeDef原型:uint32_t EXTI_InitTypeDef::EXTI_Line {uint32_t EXTI_Line FunctionalState EXTI_LineCmd EXTIMode_TypeDef EXTI_Mode EXTITrigger_TypeDef EXTI_Trigger }含有4个成原创 2013-03-12 15:32:23 · 3812 阅读 · 0 评论 -
基于stm32f103zet6的串口学习
进行串口配置的步骤一、初始化GPIO,配置GPIO模式一个结构体GPIO_InitTypeDef{GPIOMode_TypeDef GPIO_Mode//GPIO模式,输入,输出? uint16_t GPIO_Pin //哪个管脚?GPIOSpeed_TypeDef GPIO_Speed//输出响应速度?如果为输入则可以不设置} //GPIO_Mo原创 2013-03-12 15:30:01 · 6157 阅读 · 0 评论 -
基于stm32f103zet6点亮LED之启动文件
终于开始点亮第一个LED了,惯用思维,从模仿开始!前两天一直在做最小系统板,今天上午才调试出来,测试程序也是的别人的,从现在开始就来仔细分析一下这第一个点灯大法吧!由于在开始学习stm32之前已经接触过相关的指导书了,所以现在学起来还是比较轻松的,废话不多说,直接从启动文件开始吧!启动文件这部分和arm11的还是很类似的,是开发板上电后执行的第一段代码,唯一不同的感觉的就是比arm11的启原创 2013-03-09 14:54:18 · 3697 阅读 · 0 评论 -
基于stm32f103zet6之最小系统的制作
因为嵌入式老师一直鼓励我们去学习stm32,他说这是一款很不错的片子,所以就萌生了学习stm32的念头,之前一直在学习基于arm11的OK6410,裸机跑到触摸屏就没有再继续了,感觉6410重点不在于裸机,所以后来一直在研究uboot,uboot算是入门了,只是感觉,linux系统和bootloader这样的东西总是不能急躁的,只能慢慢来,所以就开始着手stm32了,类似于51、430的,先做个最原创 2013-03-09 10:59:34 · 15378 阅读 · 2 评论