依托STM32做开发,菜鸟如何逆袭!

发布者:TranquilMind最新更新时间:2024-08-09 来源: elecfans关键字:STM32  开发  菜鸟 手机看文章 扫描二维码
随时随地手机看文章

我想说,为了学习单片机而去学习单片机的思路不对。

你问,如何系统地入门学习stm32?


本身就是一个错误的问题。假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习。

你要考虑的是, 我可以用STM32实现什么?

为什么使用STM32而不是8051? 是因为51的频率太低,无法满足计算需求?是51的管脚太少,无法满足众多外设的IO? 是51的功耗太大,电池挺不住?是51的功能太弱,而你要使用SPI、I2C、ADC、DMA? 是51的内存太小而你要存储的东西太多?


当你需要使用STM32某些功能,而51实现不了的时候, 那STM32自然不需要学习,你会直接去寻找STM32某方面的使用方法。比如要用spi协议的网卡、要使用串口通信、要使用rtos等等。。。

从菜鸟到牛人的学习步骤

我们假定大家已经对STM32的书籍或者文档有一定的理解。如不理解,请立即阅读STM32的文档,以获取最基本的知识点。

英文好的同学,请不要以为你很牛,可以只看英文文档。毕竟你是中国人,你最熟悉的,理解最好的还是中文。看英文的速度还是比看中文慢一些,我们要的是最短的时间,而不是追求短时间内记住所有细节。当然,如果是一篇论文,建议看英文原版还是有好处的。

STM32处理器进入国内市场时候,ST官方(或者第三方)的推广工作做的非常好。翻译了大量的英文文档,迎合了国内的很多工程师的思维。

学习的时候,关注两个比较重要的文档:《STM32F103xxx参考手册》,《STM32固件库使用手册》。这是针对有充足的时间、精力的同学,建议去下载需要查阅的文档,以获取更多信息。

阅读《STM32F103xxx参考手册》,一定要注意,不需要全部阅读——没有时间的。建议选读,但是前几章必读。存储器和总线架构、电源控制、备份寄存器、复位和时钟控制,通用和复用功能I/O,中断和时间等等前几章一定要花时间阅读。

后面章节,讲述的是具体的功能模块设计。如果我们用到哪个模块,就可以去阅读哪个模块。比如在使用AD的时候,就需要去阅读第10章ADC。其他不举例。相信每个初学者都有自己的研究方向和判断。

阅读《STM32固件库使用手册》,主要是为了简化编程。STM32给我们提供了一个非常好的固件函数库,我们只要去调用即可。当然,我们也可以不去碰这些固件库——传说使用它会使得代码效率变低,是有道理的。网络上也出现了很多网友自己写的代码,没有使用带固件库函数。如何取舍,在于您的选择。

这里我主要强调的是,阅读《STM32固件库使用手册》的时候,前面几章也是必须阅读的。比如第一章文档和库规范中的命名规则,编码规则,这些都是需要注意的。第二章是最关键的,希望大家熟读。第二章描述了固件库的架构,我们如何去使用固件库的步骤等。有了第二章的基础,我们就可以借助固件库写出自己的代码了。第四章开始之后,就可以根据大家的需要来阅读。实际上,后续的章节,都是描述某个模块有什么什么函数,每个函数如何使用等。

关于后面的章节,建议对GPIO库函数、中断部分库函数、复位和时钟设置的库函数要比较熟悉,因为平时经常会用到。

以上提到的这两个文档,已经足够您看的了,呵呵。希望您能从中获取大量的STM32基础知识。

设定一个不错的两周入门计划

(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)软件。

这两个软件在安装软件的过程可以查看神舟开发板用户手册,这里不再重复,大家可以参考我们推出的教程《如何安装J-Link驱动软件》以及《如何安装MDK(Keil)软件》。如何验证自己已经熟悉调试软件的操作了呢?很简单,神舟STM32开发板光盘里附带了很多HEX格式的文件,可以选择一些HEX文件,来观察运行结果。

该步骤要达到的目标:熟悉调试软件,如烧写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移植等,有精力还可以研究其他外设。


关键字:STM32  开发  菜鸟 引用地址:依托STM32做开发,菜鸟如何逆袭!

上一篇:stm32软复位 内核复位和系统复位
下一篇:为什么学习STM32? 如何系统地入门学习stm32呢?

推荐阅读最新更新时间:2024-11-09 11:35

基于STM32单片机的USB时钟配置设计
1.首先要配置好系统的时钟如下: RCC_DeInit();//将外设RCC寄存器重设为缺省值 /*EnableHSE*/ RCC_HSEConfig(RCC_HSE_ON);//设置外部高速晶振(HSE) /*WaittillHSEisready*/ HSEStartUpStatus=RCC_WaitForHSEStartUp();//等待HSE起振,等待外部的时钟起振 if(HSEStartUpStatus==SUCCESS) { /*EnablePrefetchBuffer*/ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//使能或者失能预取指缓存 /*F
[单片机]
基于STM32实现简单呼吸灯
01第一步; 打开STM32cubeMX软件(我使用的版本是4.18),新建项目,选择STM32F103R6Tx; 02第二步:然后对TIM1或者TIM2进行设置,本次我们使用TIM1做PWM实验,选择内部时钟作为定时器时钟; TIM2定时器的内部时钟 03第三步、STM32时钟配置保持默认不变,因为我们用proteus仿真来验证本次实验; 04第四步、然后对TIM1进行定时中断时间的设置 ,如下图所示: 05第五步:生成代码 06第六步:在keil中,修改代码。 添加两个变量 主函数中的代码 07第七步:在虚拟仿真软件proteus 8.8 版本,绘制出stm32f103的图纸,然后添加刚刚产生的hex文件
[单片机]
基于<font color='red'>STM32</font>实现简单呼吸灯
数据驱动时代,自动驾驶开发如何造「飞轮」?
随着 L2+ 自动驾驶 逐步渗透,行业向高阶自动驾驶发起新一轮进攻。 整个算法架构也随之不断演进: 从独立模型过渡到多任务学习;从 传感器 数据后融合到前融合;从规则主导转变为 深度学习 ;… 另外,端到端成为各车企、Tier1 绕不开的技术关键词。 比如理想发布「端到端+VLM」的全新模型架构,打出快慢系统的组合拳,能让 AI 做出拟人化的驾驶行为。 而这些模型性能的进阶,是基于底层开发工具链足够强大。 具体要求是,能够向更高效的网络设计与算法优化不断靠拢。 这是 NVIDIA 的优势。 在近期《汽车之心·行家说》NVIDIA 专场中,作为全球领先的 AI 计算助推者,以自动驾驶开发平台和 数字孪
[汽车电子]
PNNL和微软合作使用AI推进储能新材料开发
  这两家公司表示,他们专注于利用人工智能最擅长的领域——综合数十亿信息比特,并根据分析快速得出结论。微软的Azure量子元素平台(Azure Quantum Elements,AQE)使用了专门为帮助科学发现而构建的人工智能模型。PNNL的研究人员现在正在测试它识别能源应用新材料的能力。   PNNL的科技副主任Tony Peurrung说:“我们相信,人工智能、云和高性能计算的交叉,以及人类科学家,是加速取得有意义的科学成果的关键。我们与微软的合作是为了让
[新能源]
STM32引脚中的BOOT1在哪里
STM32是STMicroelectronics(意法半导体)推出的一系列32位微控制器,广泛应用于嵌入式系统设计。关于STM32的BOOT1引脚,它主要与系统的启动模式有关。 BOOT1引脚功能: BOOT1引脚是一个用于选择STM32微控制器启动模式的引脚。当系统上电或复位时,BOOT1的电平状态将决定微控制器从哪个存储介质启动。通常,BOOT1引脚可以配置为以下两种模式之一: 低电平:从内部Flash启动 高电平:从外部存储器(如NOR Flash、NAND Flash等)启动 BOOT1引脚位置: 不同型号的STM32微控制器,BOOT1引脚的位置可能会有所不同。以下是一些常见型号的STM32微控制器中BOOT
[单片机]
STM32库函数EXTI_GetFlagStatus和EXTI_GetITStatus区别
一个是获取状态的,一个是获取中断的。 EXTI_GetFlagStatus只是纯粹读取中断标志位的状态,但是不一定会响应中断(EXT_IMR寄存器对该中断进行屏蔽);而EXTI_GetITStatus除了读取中断标志位,还查看EXT_IMR寄存器是否对该中断进行屏蔽,在中断挂起&没有屏蔽的情况下就会响应中断。仔细看看代码就知道区别了 FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line) { FlagStatus bitstatus = RESET; assert_param(IS_GET_EXTI_LINE(EXTI_Line)); if ((EXTI- PR & EX
[单片机]
OK6410A 开发板 (八) 117 linux-5.11 OK6410A Prefetch Abort 实例分析
流程 vector_pabt vector_stub pabt, ABT_MODE, 4 __pabt_usr usr_entry pabt_helper bl CPU_PABORT_HANDLER // v6_pabort do_PrefetchAbort const struct fsr_info *inf = ifsr_info + fsr_fs(ifsr); inf- fn(addr, ifsr | FSR_LNX_PF, regs); pr_alert( Unhandled prefetch abort: %s (0x%03x) at 0x%08lxn , inf-
[单片机]
基于STM32+OV7670的低端视频监控系统设计
1 芯片简介 1.1 STM32F407简介 本系统采用的处理器是意法半导体公司的STM32F407,该处理器以32位Cortex—M4为内核,具有浮点运算功能的低端高速ARM,其内部集成了大量可供立即使用的资源,如TFT液晶显示器接口(Flexible Stactie Memory Control,FSMC)、摄像头接口(Camera Inter face)、DMA控制器等,方便且实用。 1.2 OV7670简介 OV7670是OmniVision公司基于CMOS VGA的图像传感器,可通过SCCB总线控制输出整帧、子采集、取窗口等操作,其VGA图像最高可达到30 fps。其对外重要接口有:XCLK(时钟输入)、HREF(输出行
[单片机]
基于STM32+OV7670的低端视频监控系统设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved