前言:
目前朋友们对“stm32f103移植ucos”大约比较关注,兄弟们都想要分析一些“stm32f103移植ucos”的相关知识。那么小编在网上搜集了一些有关“stm32f103移植ucos””的相关文章,希望小伙伴们能喜欢,你们一起来了解一下吧!从青铜到王者,学习STM32就是如此简单
为了进修单片机而去进修单片机的思维是不对的
你问
怎么样系统地入门进修stm32?
自身就是一个错误的问题
假设你会运用8051
会写C语言
那么STM32自身并不须要刻意的进修。
你要考虑的是
我能够用STM32达到什么?
为什么运用STM32而不是8051?是由于51的频次太低,没法满足计算需求?是51的管脚太少,没法满足众多外设的IO?是51的功耗太大,电池挺不住?是51的功能太弱,而你要运用SPI、I2C、ADC、DMA?是51的内存太小而你要存储的东西太多?
当你须要运用STM32某些功能,而51达到不了的时候, 那STM32自然不须要进修,你会直接去寻找STM32某方面的运用方法。假如要用spi协议的网卡、要运用串口通信、要运用rtos等等.....
01
从青铜到王者的学习步骤
我们假定大家已经对STM32的书籍或者文档有一定的了解。如不了解,请立即浏览STM32的文档,以获取最根本的知识点。
///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程和毕业设计指导,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像白色字体加我也能领取哦,记得口令一哥///
英文好的同学,请不要以为你很牛,能够光看英文文档。毕竟你是中国人,你最熟悉的,了解最好的还是中文。看英文的速度还是比看中文慢一些,我们要的是最短的时长,而不是追求短时长内记住所有细节。当然,假如是一篇论文,建议看英文原版还是有益处的。
STM32处理器进入国内市场时候,ST官方(或者第三方)的推广工作做的非常好。翻译了大量的英文文档,迎合了国内的很多工程师的思维。
进修的时候,关注两个比较重要的文档:《STM32F103xxx参照手册》,《STM32固件库运用手册》。这是针对有充足的时长、精力的同学,建议去下载须要查阅的文档,以获取更多信息。
浏览《STM32F103xxx参照手册》,一定要注意,不须要全部浏览——没有时长的。建议选读,但是前几章必读。存储器和总线架构、电源控制、备份寄存器、复位和时钟控制,通用和复用功能I/O,中断和时长等等前几章一定要花时长浏览。
后面章节,讲述的是详细的功能模块设计。假如我们用到哪个模块,就能够去浏览哪个模块。假如在运用AD的时候,就须要去浏览第10章ADC。其他不举例。相信每个初学者都有自己的钻研方向和判断。
浏览《STM32固件库运用手册》,主要是为了简化编程。STM32给我们提供了一个非常好的固件函数库,我们只有去调用即可。当然,我们也能够不去碰这些固件库——传说运用它会使得代码效率变低,是有道理的。网络上也出现了很多网友自己写的代码,没有运用带固件库函数。怎么样取舍,在于您的选择。
这里我主要强调的是,浏览《STM32固件库运用手册》的时候,前面几章也是必需浏览的。假如第一章文档和库规范中的命名规则,编码规则,这些都是须要注意的。第二章是最重要关键的,希望大家熟读。第二章描述了固件库的架构,我们怎么样去运用固件库的步骤等。有了第二章的根底,我们就能够借助固件库写出自己的代码了。第四章初始之后,就能够依据大家的须要来浏览。现实中上,后续的章节,都是描述某个模块有什么什么函数,每个函数怎么样运用等。
关于后面的章节,建议对GPIO库函数、中断局部库函数、复位和时钟设置的库函数要比较熟悉,由于平时经常会用到。
以上提到的这两个文档,已经足够您看的了,呵呵。希望您能从中获取大量的STM32根底知识。
02
设定一个两周入门计划
(1)这里所谓的“入门”,指的是能了解并掌握一些常用的STM32外设,真正想掌握一款处理器,两周根本证明不了什么问题。只能说,你已经有所了解了。但是,这对我们初学者来说已经足够了。
(2)这里所谓的“两周”,依据每个人的时长安排不同而不同。
假如您每天有充足的时长进修,那么能够规定自己尽快地能独立地进行简略的STM32开发。
假如您每天独有业余时长来进修STM32,建议依据您的详细情况安排时长。毕竟方案时长假如安排太紧,反而收不到优秀的效果,只能进入恶性循环,这是我们要避免的。
但是建议,不管您有没充足的时长,都必需给自己做一个方案!!
这里列出一个思路,仅供参考。
步骤一,安装完STM32进修的软件,假如J-Link、Keil for ARM(MDK)、ISP(假如须要从串口下载的话)。这些软件安装的详细步骤,能够参照我们推出的相应教程进行。
步骤二,挑选局部例程的HEX,假如LED灯的例程HEX文件,下载到芯达STM32开发板中,观察两个LED灯的闪烁情况。这局部的操作,能够参照我们推出的相应的教程进行。
现实中上,以上两个步骤,是为了熟悉要运用的工具软件罢了。属于找感觉的阶段。其实我们还没初始STM32的进修呢!
步骤三,准备几个常用的文档,假如《STM32的用户手册》,《STM32固件库运用手册》等文档。用于平时查阅。这些文档,在光盘中的芯片手册目录中均可找得到。
步骤四,初始查看例程的编写,看看例程是怎么样写的,自己可否修改下例程,到达自己想要的效果呢?
步骤五,Ucos-II的移植,是否须要试一下?
祝贺你,至此,你已经能够自如进行独立的开发了。最后一步,给自己一个宗旨(项目),把它达到出来!
再次强调,以上只是一个进修STM32的思维,供大家参照。下面列出了前面重要关键的步骤,希望大家能尽快入门。
第1步:熟悉调试软件
对初学者来说,我们至少须要安装两个软件:J-Link驱动软件、MDK(就是原来的Keil)软件。
该步骤要到达的宗旨:熟悉调试软件,如烧写HEX出现问题,可简略判别问题所在,并独立攻克。
第2步:GPIO编程
这是第一次接触固件库的编程,一定要硬着头皮去了解固件库。建议大家尽量去用固件库。而不是避开固件库自己写代码——这样只能在进修中才会发生。现实中的项目中,代码成百上千个,怎么样一个一个自己写?调用固件库中的函数来完成,才是王者之道。
GPIO本身的编程实际上很简单
1、设置GPIO口的引脚为输写或者输出模式。我们在进行点灯代码的时候,一般设置为推挽输出模式。
2、操作寄存器,往寄存器里置1或者清零操作——这个步骤,固件库已经提供了专门的GPIO_SetBits函数和GPIO_ResetBits函数,我们只有去调用即可达到对IO口的置1和清零。
3、达到多种花样的LED闪动,使得自己熟悉GPIO的编程过程。
该步骤要到达的宗旨:熟悉调试软件,如烧写HEX出现问题,可简略判别问题所在,并独立攻克。
第3步:开始全新的STM32深入研究
经过以上调试软件的熟悉和GPIO口的编程调试后,相信您已经对STM32有一定的了解。
至少知道怎么样利用STM32的固件库去写一个代码。在这个阶段,将要接触到串口编程、TFT液晶屏驱动编程、定时器编程、串行外设接口SPI编程、存储器编程、SD卡与文件系统移植、USB读写、UCOS移植等,有精力还能够钻研其他外设。
03
GPIO的8种工作模式详解
推挽输出
能够输出高、低电平,连接数字器件;推挽构造一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次独有一个导通,所以导通损耗小、效率高。输出既能够向负载灌电流,也能够从负载抽取电流。推拉式输出级既提高电路的负载才能,又提高开关速度。
开漏输出
输出端相当于三极管的集电极,要得到高电平状态须要上拉电阻才行。合适于做电流型的驱动,其吸收电流的才能相对强(一般20mA以内)。开漏形式的电路有以下几个特点:
1、利用外部电路的驱动才能,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经上拉电阻、MOSFET到GND。IC内部仅需很小的栅极驱动电流。2、一般来说,开漏是拿来连接不同电平的器件,匹配电平用的,由于开漏引脚不连接外部的上拉电阻时,只能输出低电平,假如须要同时具备输出高电平的功能,则须要接上拉电阻,很好的一个优点是通过变更上拉电源的电压,便能够变更传输电平。假如加上上拉电阻就能够提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的速度。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。)3、开漏输出提供了灵敏的输出方式,但是也有其弱点,就是带来回升沿的延时。由于回升沿是通过外接上拉没源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以假如对延时有要求,则建议用下降沿输出。4、能够将多个开漏输出连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,构成“与逻辑”关系,即“线与”。能够简略的了解为:在所有引脚连在一起时,外接一上拉电阻,假如有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,独有都为高电平时,与的结果才为逻辑1。关于推挽输出和开漏输出,最后用一幅最简略的图形来概括:该图中左边的便是推挽输出模式,其中比较器输出高电平时下面的PNP三极管截止,而上面NPN三极管导通,输出电平VS+;当比较器输出低电平时则恰恰相反,PNP三极管导通,输出和地相连,为低电平。右边的则能够了解为开漏输出形式,须要接上拉。
浮空输入
对于浮空输入,一直没找到很权威的解释,只好从以下图中去理解了
由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。
上拉输入/下拉输入/模拟输入
这几个概念很好理解,从字面便能轻易读懂。
复用开漏输出、复用推挽输出
能够了解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口运用)
总结在STM32中选用IO模式
1、浮空输写GPIO_IN_FLOATING ——浮空输写,能够做KEY识别,RX1
2、带上拉输写GPIO_IPU——IO内部上拉电阻输写
3、带下拉输写GPIO_IPD—— IO内部下拉电阻输写
4、模拟输写GPIO_AIN ——应用ADC模拟输写,或者低功耗下省电
5、开漏输出GPIO_OUT_OD ——IO输出0接GND,IO输出1,悬空,须要外接上拉电阻,才能达到输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就能够由外部电路变更为低电平或不变。能够读IO输写电平变化,达到C51的IO双向功能
6、推挽输出GPIO_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输写值是未知的
7、复用功能的推挽输出GPIO_AF_PP ——片内外设功能(I2C的SCL,SDA)
8、复用功能的开漏输出GPIO_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)
04STM32设置实例
1、模拟I2C运用开漏输出_OUT_OD,接上拉电阻,能够正确输出0和1;读值时先GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,其次能够读IO的值;运用GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);
2、假如是没上拉电阻,IO默认是高电平;须要读取IO的值,能够运用带上拉输写_IPU和浮空输写_IN_FLOATING和开漏输出_OUT_OD;
通常有5种方式使用某个引脚功能
它们的配置方式如下:
1、作为普通GPIO输写:依据须要配置该引脚为浮空输写、带弱上拉输写或带弱下拉输写,同时不要使能该引脚对应的所有复用功能模块。
2、作为普通GPIO输出:依据须要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。
3、作为普通模拟输写:配置该引脚为模拟输写模式,同时不要使能该引脚对应的所有复用功能模块。
4、作为内置外设的输写:依据须要配置该引脚为浮空输写、带弱上拉输写或带弱下拉输写,同时使能该引脚对应的某个复用功能模块。
5、作为内置外设的输出:依据须要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。
注意假如有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。假如要运用STM32F103VBT6的47、48脚的USART3功能,则须要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输写模式,同时使能USART3并保持I2C2的非使能状态。假如要运用STM32F103VBT6的47脚作为TIM2_CH3,则须要对TIM2进行重映射,其次再按复用功能的方式配置对应引脚。
想要学习单片机的朋友 ,做毕业设计的同学,关注我们,口令一哥,与导师一起学习成长,共同进步,还有更多资料领取。
说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~
-END-
*本文系网络转载,版权归原作者所有,如有侵权请联系删除
标签: #stm32f103移植ucos