如何系统地入门学习stm32?

2023-05-16

来自:https://www.zhihu.com/question/46616925

心得
本人当初学习STM32的时候有一些跟风的因素,自以为学的芯片越多就越厉害 =_=、 其实,学习嵌入式重要的是整体的工程思想和项目经验积累,说到底这些芯片,我感觉学习起来都差不多吧,无非就是对内资源(寄存器、中断、定时器、串口等等),和对各种外设的操作而已,挂载的外设越多,系统会越复杂,这时可能会用上操作系统,同时,如果工程中涉及到各种算法、自动控制、采样、滤波等实际问题的时候,不仅会上操作系统,而且还对数学、物理、电路等方面知识要有较强的功底,对编程的能力的要求会更高,此时就要求对STM32的各种资源有比较明晰的了解了。

回到问题,题主问:**如何系统的学习STM32?

**(这个问题,,,讲句实话,以本人的水平,真的不敢强答 =_=,才学有限,仅仅提几点建议吧)

建议: 1、要动手实践,要动手实践,要动手实践!
下面有位答主也提到了,工科类的东西光看是不够的!算法如何实现,自己独立设计再动手去敲一敲就知道了;外设如何驱动,找到芯片手册,照着时序图自己敲一遍;涉及到操作系统部分的内存管理与进程调用,找到源码仔仔细细研读几遍(自己应该写不出吧 =_=),相信你一定会很有收获的,可能我这个方法比较笨,但是确实挺实用的,个人觉得。

**2、准备好资料与开发板

**相信很多人都有这样的意识吧,学一款芯片首先想到的是买一块开发板,对的,没错!巧妇难为无米之炊嘛,这里推荐两本书《C和指针》、《Cortex-M3权威指南》和《STM32库开发实战指南》网上都有PDF版本,结合自己的开发板配套的视频教程(某火的讲的就不错,需要的话私信发给你),先要理解透彻,然后自己独立去敲一敲,触类旁通,例子上给出的都不会很难,知识的拓展很重要,就是举一反三。还有,不懂得话就多去各大论坛大神虚心请教,论坛里有很多经验帖子值得学习。

**3、库开发与寄存器开发?

**现在STM32入门门槛都不高,稍微有点C语言和单片机基础的都能学,有人说:寄存器操作那么复杂难懂,那一堆寄存器名字都记不住,,,那寄存器开发是不是就不重要了?显然不是,我会说大牛与菜鸟的却别就在这儿?尽管我也很菜。。。建议:库开发为主,看寄存器是为了理解实现的原理,所以寄存器部分不能丢了。有余力可以深入学习下,这对M3内核的理解很有帮助,以及后面ARM系列芯片的学习都很有帮助。

**4、多做东西。在实际工程项目中去锻炼能力

**题主才大一,若对这一块感兴趣的话,可要把51单片机的知识深入透彻地学扎实哟,这是基本功。尽量争取加入实验室,跟着学校实验室的老师、学长,学姐,并积极参加校内外组织的各种比赛,如电赛、全国STM32大赛,飞思卡尔智能车,四旋翼等等。一开始不懂没关系,只要他们不嫌弃你,积极好学、不要怕苦!(在实验室里要谦虚、好学、低调啊,切勿装逼!否则被打脸是很惨的,别问我怎么知道的 =_=…),有条件的话,可以组建团体去接外面的项目,当然要经过老师同意,或者代做毕业设计也是条财路 【 手动斜眼】

**5、勤总结,有整体思想。形成自己的总结文档、代码风格

**可能很多人都没有这个习惯,包括当初本人自己,拿到一个课题或者项目的时候,大概写一下流程,就开干,途中遇到很多问题,程序改了又改,从v1.0改到v10.0都还有BUG,,,究根到底,还是自己学得不够透彻不够扎实,没有一个整体的概念,知识零散杂乱,不成体系。有时候,程序框架、流程都没有错,就因为时钟PLL配置上的冲突,导致一个礼拜BUG找不出来,,,所以,形成良好的编程习惯、勤写注释、善于总结真的很重要!最好能形成文档,这绝对是最好的经验积累形式!



我从事单片机开发多年,用过非常多芯片,有stc、中颖、GD、新唐、BLE、Zigbee、NXP、还有一些国产SOC等等,唯独ST的让我最省心,不管是STM8还是STM32。

省心只要是体现在稳定,只需要按照常规方法配置就不会有乱七八糟奇奇怪怪的问题出现。

之前碰到过最蛋疼的芯片,有些Flash会掉数据,有些串口不稳定,最后还得用程序来规避芯片的不人性化,明明1个小时能搞定的,硬是给这些奇怪的问题拖了几天。

如果说在样品阶段测试出来还好,如果是大批量才慢慢出现这些问题,估计老板撕了你的心都有。

所以在成本要求不是特别苛刻的情况下,我一般都会用ST的。

STM32对刚入门的不是那么友好,但是对有一点开发经验的,还是能大大缩短开发周期的。

那新手要如何去学习STM32呢?无际根据自己的经历总结出最有建设性的学习方法,如果你能适应这种学习方法,1周搞定stm32绝对没问题!

1. 改变思维

当你有系统学习stm32的时候,就注定你会走很多弯路,甚至浪费很多时间最后也学不会。

因为内部结构越复杂的单片机,你学习需要花费的时间就越多。

但是你有没有想过,你学单片机的目的是什么?

肯定不可能只是为了学单片机这么简单对吧?而是通过单片机来做产品,或者说DIY一些有趣的项目。

人的一天真正高效工作学习的时间或许8小时都不到,我们怎么利用好这8个小时直接决定你和别人的差距。

比如说我做一件事,我会拆解完成这件事我要做哪些工作,然后把最核心的环节拿出来优先做,就像做产品,先实现功能再优化细节。

同样的方法用在学习stm32也很合适,stm32在整个产品当中其实只是一个工具而已

既然是工具,那当然是能用起来就行了,无非就是用芯片的外设而已,你系统的去研究它干嘛?

2. 正确学习姿势

我一直都比较提倡新手从51单片机学起,把精力放在c编程和培养项目思维上,与其有空去深挖单片机,还不如多做几个项目。

我刚开始是使用stc的芯片做过几个项目,然后产品需要接触到stm32。

我先把产品需要用到的单片机外设整理出来,再买一个开发板,然后把我要的外设先在开发板上跑一遍。

同一个例程我会改一些参数,比如说换个引脚、换个定时时间、换个串口,换个ADC通道,DMA通道等等。

大概知道知道怎么配置以后,我就不会再去研究别的功能了,比如内部时钟树架构,USB、CAN、FSMC这些。

照样不影响我把产品做出来,慢慢地我经验也丰富了,对stm32也熟悉了,就是这么自然而然的过程。

3. 最后总结

一个新鲜事物,我认为正确的顺序应该是先用起来,用熟了你再去研究它原理会事半功倍。



不要去学STM32。

我不是说STM32不好,而是这种为了学习单片机而去学习单片机的思路不对

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

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

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

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

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

关于寄存器vs库

我的观点是:当你debug的时候寄存器很重要,当你需要理解芯片工作细节的时候寄存器很重要,当你开发的时候寄存器不重要。如果你没有遇到非直接配置寄存器不可的情况,那么就不要直接面向寄存器层面开发, 因为面向寄存器开发获得的好处往往抵消不掉这样做的坏处。 面向寄存器开发程序效率高,但是你需要为了提高0.01%的效率浪费10倍、乃至100倍的时间。 既然ST公司已经给你提供了好用的库,没有道理要重新造轮子。

那什么时候必须直接控制寄存器?

第一、某一个代码块调用非常频繁。比如你有一个巨大的for循环,那么这个for循环中的每一步操作都应该被谨慎的优化,优化良好就可以获得更好的性能。这种情况一般常见于图像处理相关的代码中。

第二、库函数有bug。这个遇到的概率非常低,但确实存在。不过一般来说如果mcu表现出预料之外的行为, 你首先要想的应该是你的代码写的有bug,而不是库函数有bug。 如果库函数真的有bug,你去google搜一下,相信你绝对不是第一个踩坑的人。

对于传统的电子工程师来讲,使用库编程可能会感到有一点虚,感觉没有脚踏实地的感觉。 但如果你写过web、写过服务器端代码、写过桌面端代码的话,你就一定会理解API、封装、抽象的意义。



讲一下个人经历,大学学习51的时候无意中发现了stm32的程序,哇,好厉害,好多io,好多寄存器,让后把各个例程都抄了一遍(主要部分),分析一遍功能是如何实现的,分析库函数,找到具体的寄存器实现,与芯片手册一一对应,果然一个不差,从此整个人对嵌入式软件开发感觉就不一样了。

之后买了个开发版,都没怎么用,感觉源码都是现成的,不用跑都知道结果,懒得调了,玩游戏去了。

再之后学了ad软件,学校就教一些基本用法,学的云里雾里,直到毕业找工作,没啥实际经验,碰了几次壁,虚了,毕业设计做个电路板充数吧,翻出以前开发板文件找到了原理图文档,查芯片,阴差阳错在网上找到了stm32元件库文件,一番折腾还真画出了一个stm32f103rbt6系统板,虽然只有最小系统,电源模块和几个接口引出,但经过买元件,投板,焊接,并最终将程序下载成功后,心情还是非常激动的。这也是我硬件开发一个开始。

之后拿着板子招摇撞骗,总结应聘经验,成功混入一家做stm32的初创企业,在这里,我才明白了stm32软件调试的困难所在,不仅仅是外设,而是多个外设共同协调工作,也有诸如lwip,ucos这些大的源码进行分析,想起以前抄程序的自己,咬咬牙,继续一点点进行分析。

再之后,往电子行业深处学习,学习多层板,高速电路的设计,技术看上去高深莫测,但我曾经自己就把stm32整出来了,这些肯定也能行。

现在,还在寻求发展机遇,但我每一份简历的第一句话永远都是:精通stm32单片机开发。



答主在前面的很多关于STM32以及其他单片机相关问题的回答中,更多是根据个人的经历经验给出了抽象的方法论,现在想想可能真的过于抽象和难以理解。正好看到了题主的这个问题,正好那就借助这个机会,也来回顾一下自己是如何开始入手STM32,开发产品的。希望我的经历能够给大家学习STM32有所帮助和启发。

img

答主从本科开始接触C51单片机开始,算是正式入行了嵌入式MCU开发的道路。参加校级的电子设计大赛,因为赞助的原因,选择了当时新款的**凌阳单片机做了一款智能语音声控门锁。攻读硕士期间,虽然主要的横向项目都是以西门子/欧姆龙PLC+Intouch/组态王+HMI为主,但是依然还是在课余利用TI的MSP430**单片机制作了两款GPS定位和GSM数传产品,并进行了产品化的尝试和探索。毕业加入到华为公司以后,任职嵌入式底软驱动开发工程师。接触了大量的海思自研和各类主流的MCU+SOC芯片,嵌入式Linux能力有了很大的提高。但是没有接触当时最流行的STM32。

后来从另一家外企跳出来和别人自主创业,研发基于STM32的视频处理器。那是我第一次开始真正的接触STM32。所以说STM32完全是靠前期的MCU基础和编程基础,经过项目的历练自学成才的。同时,我也根据自己的STM32学习经历,整理出MCU软件入门过程的思维导图。

img

答主当时因为已经具备多年的C语言编码经验,也熟悉多款MCU的基本原理。使用全套正点原子的教材和开发板,并结合一本STM32的配套教材及芯片手册(好多页哇)进行了STM32的学习。具体如下图所示:

img原子教你玩STM32(库函数版 第2版)京东¥58.60去购买

imgSTM32库开发实战指南(第2版):基于STM32F103京东¥71.00去购买

所以前期的MCU的理论基础和KEIL软件的学习使用,进展的很顺利(此处我设定的第一目标是实现最小系统的运行和移植,所以进展很快)。这里对于基础知识,提醒新手朋友们,有一些细节的地方必须弄清楚明白,否则后面使用库函数的时候很容易弄混乱:

  1. STM32的时钟总线,哪些外设都挂接在哪些时钟线上尽量要清楚;
  2. STM32的时钟树结构/分频设置。我承认很难理解,但是多看几遍多画几遍基本都没啥问题。
  3. STM32的GPIO管脚重映射,复用概念必须弄清楚。
  4. STM32的中断分组,分级管理机制。
  5. STM32的最小系统搭建,配置必须明白。最好能实现开发板的自主移植。

当学完了基本的STM32最小系统之后,在完成了原子精英板的移植后,我又将stm32的最小系统在我们的产品验证板进行了移植和运行。从而完全掌握了STM32最小系统和基本STM32代码开发流程(其实主要是STM32库函数的使用)。

虽然刚开始被STM32的时钟树和中断分级分组搞的有点郁闷,但是攻克了最小系统后还是让我有了更大的信心和动力。由于创业嘛,没有时间给你充分学习,我只好发挥硕士搞科研时候的老办法:拿来主义,用到那个外设就马上研究这块,两本书+芯片手册一起入手。这样我基本对同一个外设需要看三遍不同的讲解。IIC(连接视频处理芯片控制用),SPI(外接存储),DMA(视频数据传输),定时器(OSD调整和红外遥控器解码分析),USB驱动…一个一个模块的啃下来,我发现其实STM32真的是一款性价比很高的MCU。另外:此处没有提到ucos,因为在华为的时候就掌握所以ucos的STM32移植和开发并没有耗费太多时间。同时,学完一个部分的基础知识和代码编程,我肯定要在精英板和开发板做两遍实验才叫合格

所以,从答主个人的经历和快速上手的角度来讲,STM32在学习完最小系统后,最好用到那块学习那块,毕竟知识的记忆都是遵守记忆曲线的。总体来说,我个人的STM32的学习,完全是按照我上面的思维导图。从基础->实践,最好以项目或者开发目标为指引,这样自学起来会更加目标聚焦动力充足

附上答主当年创业时候呆过的办公位,虽然时隔多年依然深深怀念那个时候的一切。虽然创业失败了,但是至少我们还有很多产品问世。也许他们一文不值却也饱含我们的努力和心血。至少我们曾经都年轻过并为理想奋斗过。



如何系统地入门学习STM32?

假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习。

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

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

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

img

从菜鸟到牛人的学习步骤

我们假定大家已经对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移植等,有精力还可以研究其他外设。



我竟然是受到了邀请,这是怎么回事?荣幸。嘻嘻,既然邀请了我说点了。。。

去年 下半年学了半年的51,大概知道了中断什么的,今年因为要去比赛,比赛使用的ht32,跟stm32一样的内核,就看了点stm32的知识。。。。哦,偏题了说正事:

就我现在的水平就只能给你说说看看哪些书,怎么能看懂一些不理解的名词了

好了,开始。我这里说的差不多都是看的网络大神们的建议。(以下个人意见)

1、要会用ide,就怎么建立工程,怎么调试,基本的调试会,什么单步,什么看外设的寄存器状态呀!(当中可以去写个简单的点灯增加信心哦!我就是这样,稳不住,一个字:急)你C语言肯定没得问题。

2、推荐去看

img

这本书 哦!把中级的的做一下。就是这些,但是前面的也要看看哦

img

做完应该有好多的认识。

3、在就应该去看看《Cortex-M3权威指南》等内核的书。

我也是新手。我这就stm32写个流水灯,应该就不太会。而且没你那么好的C语言基础。对了。还有个建议就是一定要好好的去理解下那个时钟的配置,我感觉哪里就会用到时钟的配置。有新感想在补充了。。。。重在坚持(也是说给自己。。。)那颗捣鼓的心。。。。!_!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何系统地入门学习stm32? 的相关文章

  • 【Python全栈100天学习笔记】Day41 Django深入理解框架

    深入模型 在上一个章节中 xff0c 我们提到了Django是基于MVC架构的Web框架 xff0c MVC架构追求的是 模型 和 视图 的解耦合 所谓 模型 说得更直白一些就是数据 xff08 的表示 xff09 xff0c 所以通常也被
  • ovs-appctl 用户手册中文翻译

    该文章收录在在我的博客 xff1a http www sskywatcher com blog 运行时管理命令 ovs appctl 能够向运行中的ovs vswitchd进程发送命令 现已支持的命令描述如下 这些描述假设读者理解如何配置o
  • 【Python全栈100天学习笔记】Day43 Django静态资源与Ajax请求

    静态资源和Ajax请求 基于前面的知识 xff0c 我们已经可以使用Django框架来完成Web应用的开发了 接下来我们就尝试实现一个投票应用 xff0c 具体的需求是用户进入应用首先查看到 学科介绍 页面 xff0c 该页面显示了一个学校
  • 【Python全栈100天学习笔记】Day44 Web表单介绍及使用

    表单的应用 我们继续来完成上一章节中的项目 xff0c 实现 用户注册 和 用户登录 的功能 xff0c 并限制只有登录的用户才能为老师投票 Django框架中提供了对表单的封装 xff0c 而且提供了多种不同的使用方式 首先添加用户模型
  • 【Python全栈100天学习笔记】Day45 Cookie和Session介绍及使用

    Cookie和Session 实现用户跟踪 如今 xff0c 一个网站如果不通过某种方式记住你是谁以及你之前在网站的活动情况 xff0c 失去的就是网站的可用性和便利性 xff0c 继而很有可能导致网站用户的流式 xff0c 所以记住一个用
  • 【Python全栈100天学习笔记】Day46 导入导出Excel报表和配置日志

    报表和日志 导出Excel报表 报表就是用表格 图表等格式来动态显示数据 xff0c 所以有人用这样的公式来描述报表 xff1a 报表 61 多样的格式 43 动态的数据 有很多的三方库支持在Python程序中写Excel文件 xff0c
  • 【Python全栈100天学习笔记】Day47 Django中间件使用

    中间件的应用 实现登录验证 我们继续来完善投票应用 在上一个章节中 xff0c 我们在用户登录成功后通过session保留了用户信息 xff0c 接下来我们可以应用做一些调整 xff0c 要求在为老师投票时必须要先登录 xff0c 登录过的
  • 【Python全栈100天学习笔记】Day48 前后端分离开发入门

    前后端分离开发入门 在传统的Web应用开发中 xff0c 大多数的程序员会将浏览器作为前后端的分界线 将浏览器中为用户进行页面展示的部分称之为前端 xff0c 而将运行在服务器 xff0c 为前端提供业务逻辑和数据准备的所有代码统称为后端
  • 【Python深度学习之路】-3.1性能评价指标

    1 理解混淆矩阵 所谓混淆矩阵 xff0c 是指将模型对各个测试数据的预测结果分为真阳性 真阴性 假阳性和假阴性并对符合各个观点的预测结果的数量进行统计的一种表格 其中 xff0c 真阳性和真阴性表示机器学习模型的回答是正确的 xff0c
  • 【Python深度学习之路】-3.2PR曲线

    1 何谓PR曲线 所谓PR曲线是指用横轴表示召回率 xff0c 纵轴表示精确率 xff0c 将数据绘制成图表的形式所得到的曲线 召回率和准确率两个指标成反比关系 xff0c 所谓反比关系 xff0c 指的是当提升精确率时 xff0c 召回率
  • 【Python深度学习之路】产生随机数

    随机数的生成 1 设置种子 计算机是根据被称为 种子 seed 的数据来生成随机数的 所谓种子 xff0c 是指在生成随机数的过程中所使用的初始值 xff0c 如果种子的值固定不变 xff0c 生成的随机数序列也是不变的 通过使用相同的随机
  • 【Python深度学习之路】时间序列数据

    1 datetime类型 对于时间序列数据进行处理时 xff0c 需要使用表示时间的方法 在P樱桃红中提供了datetime数据类型来对日期和实践进行处理 指定datetime datetime 年 xff0c 月 xff0c 日 xff0
  • caffe学习笔记

    一 mnist例程 https blog csdn net bestrivern article details 85101303 二 cifar10例程 附录 xff1a caffe常见问题及注意事项 https blog csdn ne
  • 我的创作纪念日

    机缘 提示 xff1a 可以和大家分享最初成为创作者的初心 例如 xff1a 实战项目中的经验分享日常学习过程中的记录通过文章进行技术交流 收获 提示 xff1a 在创作的过程中都有哪些收获 例如 xff1a 获得了多少粉丝的关注获得了多少
  • Python数据分析常用30段优化代码

    1 重复元素判定 以下方法可以检查给定列表是不是存在重复元素 xff0c 它会使用 set 函数来移除所有重复元素 def all unique lst return len lst 61 61 len set lst x 61 1 1 2
  • Python妙用小工具:2行Python给图片加水印

    filestools库介绍 今天给大家介绍的Python库 xff0c 叫做filestools xff0c 由小小明开发 xff0c 直接使用如下命令 xff0c 安装后使用 pip install filestools index ur
  • 在Excel中调用Python脚本,实现数据自动化处理

    说起Excel xff0c 那绝对是数据处理领域王者般的存在 xff0c 尽管已经诞生三十多年了 xff0c 现在全球仍有7 5亿忠实用户 xff0c 而作为网红语言的Python xff0c 也仅仅只有700万的开发人员 Excel是全世
  • Python数据分析中常用的工具类和方法【持续更新系列】

    本文主要记录在工作和学习中 xff0c 做数据分析常用到的一些简单的工具函数和类 span class token comment 判断是否为浮点数 span span class token keyword def span span c
  • 【Python深度学习之路】-1 机器学习概论

    Python深度学习之路 1 机器学习概论 1 1 机器学习简介 机器学习火热的原因是 xff1a 人类无论如何也做不到在短时间内实现从大量数据中自动地计算出正确结果的操作 所谓机器学习 xff1a 通过对数据进行反复的学习 xff0c 来
  • 【Python深度学习之路】-2.1 机器学习的流程

    2 1 机器学习的流程简介 进行机器学习的整体流程 xff1a 数据收集 数据清洗 xff08 清洗重复或缺失的数据 xff0c 以提高数据的精读 xff09 运用机器学习算法对数据进行学习 xff08 获取基准 xff09 使用测试数据进

随机推荐

  • 【Python深度学习之路】-2.2 过拟合与集成学习

    2 3 过拟合 计算机对数据进行了过度的学习而产生的状态 xff0c 简称 过拟合 避免过拟合的方法 xff1a 深度学习中会使用 Dropout 的方法 xff0c 而在常规解决方案中 xff0c 我们通常会使用 归一化 来消除对存在偏差
  • 【Python深度学习之路】-4 监督学习

    Python深度学习之路 4 监督学习 4 1 了解监督学习 xff08 分类 xff09 监督学习 xff1a 根据积累的经验数据对新的数据或将来的数据进行预测 xff0c 或者进行分类的一种学习方式 无监督学习 xff1a 对积累的经验
  • 【Python】string模块之ascii_letters、digits(用于生成验证码)

    方法概述 xff1a 1 ascii letters方法的作用是生成全部字母 xff0c 包括a z A Z 2 digits方法的作用是生成数组 xff0c 包括0 9 span class token keyword import sp
  • 傅里叶变换

    傅里叶变换 目录 滤波傅里叶变换简介傅里叶变换的性质快速傅里叶变换 xff08 FFT xff09 一 xff1a 滤波 滤波是将信号中特定波段频率滤除的操作 xff0c 是抑制和防止干扰的一项重要措施 是根据观察某一随机过程的结果 xff
  • centos 常用的网络登录端口测试工具

    ssh 登录 last lastb who users w lastlog ac d ac p lsof lsof i 443 ngrep ngrep port 80 ngrep q 39 GET HTTP 1 01 39 ngrep q
  • 基于stm32的半实物仿平台开发——FreeRTOS、PID控制电机

    目录 一 系统方案 1 1 系统基本方案 1 2 程序结构方案设计 二 系统理论分析计算 2 1控制算法的分析 三 硬件的选型 3 1编码器电机的选型 四 源代码 摘要 本文基于STM32F103ZET6开发板开发了一个直流电机的实物控制系
  • vnc viewer使用方法

    首先需要配置ip xff0c 网络适配器配置那个ipv4到同一网段 1 双击打开exe 2 输入目标ip 端口 3 输入密码 服务器管理工具 这里写目录标题 一 VNC管理工具1 1 工具介绍1 2 使用步骤1 3 使用截图 二 KVM安装
  • 【Unity Shader】用Cubemap实现天空盒和环境映射

    1 关于Cubemap Cubemap在实时渲染中有很多应用 xff0c 最常见的就是实现天空盒 xff08 Skybox xff09 和环境映射 xff08 Environment Mapping xff09 2 实现天空盒 2 1 实现
  • ubuntu samba搭建教程

    1 更新当前软件 sudo apt get upgrade sudo apt get update sudo apt get dist upgrade 2 安装samba服务器 sudo apt get install samba samb
  • 大数据学习路径

    第一阶段linux 43 搜索 43 hadoop体系 Linux基础 shell编程 高并发架构 lucene solr搜索 hadoop体系 HDFS mapreduce hbase zookeeper hive flume sqoop
  • 【Windows11来了】WIN11抢先体验,使用VMware虚拟机安装WIN11

    2021 6 30更新 xff1a 解决安装时出现 Operating System not found 的问题 2021 6 26更新 xff1a 解决了不同VMware版本可能默认引导方式不同造成启动不成功的问题 2021 6 25更新
  • 斜杠、反斜杠、双斜杠、反双斜杠的区别和使用方法及范围

    背景 这边我就找了两篇大神写的文章 xff0c 讲得非常清晰明了 文章主要讲了一些历史缘故和我们面对各种斜杠时的疑惑 斜杠 和反斜杠 深入探讨正斜杠和反斜杠 概念 1 斜杠 34 34 是URL地址中用到的分隔符 xff0c 并且在linu
  • C语言中int占几个字节,指针占几个字节,由什么决定呢?

    int占几个字节 今天心血来潮 xff0c 想要了解一下C语言中各整型占用几个字节 先上代码测试两个环境 xff1b include lt stdio h gt include lt stdlib h gt int main printf
  • 虚拟串口模拟器和串口调试助手使用教程

    虚拟串口 xff08 虚拟 COM 端口 xff09 xff0c 应该很多人都知道 xff0c 也就是一种模拟物理串行接口的 软件 它完全复制了硬件 COM 接口的功能 xff0c 并且将被操作系统和串行应用程序识别为真实端口 以前的电脑
  • 在Ubuntu上安装Boost的五种方法(全网最全,建议收藏)

    问题描述 我在Ubuntu上 xff0c 并且想安装Boost 我尝试过 sudo apt get install boost 但是没有这样的软件包 在Ubuntu上安装Boost的最佳方法是什么 xff1f 最佳方法 您可以使用apt g
  • 编程入门指南:零基础如何自学编程?

    注明一下 xff1a 本文适用于零基础 xff0c 想自学编程的伙伴 xff0c 重点在于盘清底层逻辑以及整理一些学习途径 编程学习如何入门 xff1f 第一步 xff1a 做好心理建设 首先要告诉你一个坏消息 xff1a 自学编程的弯路多
  • Clion中控制台中文出现乱码怎么解决?

    为什么会出现乱码 xff0c 肯定是字符的编码方式不匹配导致的 我们知道 xff0c 现在比较新一点的编辑器和IDE基本都是默认UTF 8编码了 xff0c 但是在Windows下 xff0c 控制台中的中文编码格式是GBK xff0c 因
  • Pandas教程(非常详细)

    文章目录 教程特点阅读条件 Pandas是什么Pandas主要特点Pandas主要优势Pandas内置数据结构 Pandas库下载和安装Windows系统安装Linux系统安装1 Ubuntu用户2 Fedora用户 MacOSX系统安装
  • Pygame教程(非常详细)

    文章目录 教程特点阅读条件 Pygame是什么扩展知识 Pygame下载和安装1 pip包管理器安装2 二进制安装包安装 第一个Pygame程序初始化程序创建Surface对象事件监听游戏循环 Pygame Display显示模块详解Pyg
  • 如何系统地入门学习stm32?

    来自 xff1a https www zhihu com question 46616925 心得 xff1a 本人当初学习STM32的时候有一些跟风的因素 xff0c 自以为学的芯片越多就越厉害 61 61 其实 xff0c 学习嵌入式重