江协科技STM32学习- P30 FlyMCU串口下载STLink Utility

       🚀write in front🚀  
🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 

💬本系列哔哩哔哩江科大STM32的视频为主以及自己的总结梳理📚 

🚀Projeet source code🚀   

💾工程代码放在了本人的Gitee仓库:iPickCan (iPickCan) - Gitee.com

引用:

STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili

Keil5 MDK版 下载与安装教程(STM32单片机编程软件)_mdk528-CSDN博客

STM32之Keil5 MDK的安装与下载_keil5下载程序到单片机stm32-CSDN博客

0. 江协科技/江科大-STM32入门教程-各章节详细笔记-查阅传送门-STM32标准库开发_江协科技stm32笔记-CSDN博客

【STM32】江科大STM32学习笔记汇总(已完结)_stm32江科大笔记-CSDN博客

江科大STM32学习笔记(上)_stm32博客-CSDN博客

STM32学习笔记一(基于标准库学习)_电平输出推免-CSDN博客

STM32 MCU学习资源-CSDN博客

stm32学习笔记-作者: Vera工程师养成记

stem32江科大自学笔记-CSDN博客

术语:

英文缩写描述
GPIO:General Purpose Input Onuput通用输入输出
AFIO:Alternate Function Input Output复用输入输出
AO:Analog Output模拟输出
DO:Digital Output数字输出
内部时钟源 CK_INT:Clock Internal内部时钟源
外部时钟源 ETR:External Trigger 时钟源 External 触发
外部时钟源 ETR:External Trigger mode 1外部时钟源 External 触发 时钟模式1
外部时钟源 ETR:External Trigger mode 2外部时钟源 External 触发 时钟模式2
外部时钟源 ITRx:Internal Trigger inputs外部时钟源,ITRx (Internal trigger inputs)内部触发输入
外部时钟源 TIx:exTernal Input pin 外部时钟源 TIx (external input pin)外部输入引脚
CCR:Capture/Comapre Register捕获/比较寄存器
OC:Output Compare输出比较
IC:Input Capture输入捕获
TI1FP1:TI1 Filter Polarity 1Extern Input 1 Filter Polarity 1,外部输入1滤波极性1
TI1FP2:TI1 Filter Polarity 2Extern Input 1 Filter Polarity 2,外部输入1滤波极性2
DMA:Direct Memory Access直接存储器存取

正文:

0. 概述

从 2024/06/12 定下计划开始学习下江协科技STM32课程,接下来将会按照哔站上江协科技STM32的教学视频来学习入门STM32 开发,本文是视频教程 P2 STM32简介一讲的笔记。

本节我们来写一下串口收发数据包的代码

1.🚚FlyMcu串口软件

💎💎本节主要是教大家使用两个小软件,这两个软件也是比较常用的,里面有很多有意思的功能。

这两个软件的领取链接:

链接:https://pan.baidu.com/s/10woYnveR7g_5_mv0hSQ7Zw

提取码:hgiy

FlyMcu串口下载
🌿第一个是FlyMcu,这个软件可以通过串口给STM32下载程序,如果你没有STLINK就可以用这个软件通过串口下载程序。

🌿第二个软件是STLINK utility,这个软件是配合STLINK使用的一个工具,可以通过STLINK给STM32下载程序,也可以进行一些其他的操作。

总的来说,这两个软件的功能差不多都可以下载程序。FlyMcu是串口下载,STLINK utility是STLINK下载

我们先看一下FlyMcu程序烧录软件,打开软件,这个软件是绿色软件,直接打开就能运行,不需要安装。

这个FlyMcu就跟个51单片机的STC-ISP的用途是一样的,都是串口下载。

串口下载的流程

接下来演示一下串口下载的流程。

首先硬件这里我们需要连接一个串口的电路,接法和前几小节是一样的

这个电路要能保证USART1和电脑进行串口通信

💎💎这里必须要是USART1,因为我们这个芯片的串口下载只适配了USART1,接在其他USART上是不行的。

然后在软件上,随便打开一个示例代码,比如这里拖出来了一个LED闪烁的代码作为演示。

为了实现串口下载,我们需要配置工程生成一个hex文件。

把这个创建hex文件的勾勾上,点击OK

点击编译一下,下方一定要有这句话

看到这句话则表示编译没问题。

我们就可以打开工程目录,在这个objects文件夹下,找到我们刚才生成的hex文件,这就是我们串口下载所需要的程序文件,这部分流程和51单片机里是一样的。

接下来我们就可以用FlyMcu下载程序了。

首先上面先点搜索串口,

然后port这里选择我们串口通信的com号

dps波特率可以保持默认的115200,这一部分和串口助手是一样的,

接着选择程序文件,点击这里三个点的按钮。

找到我们刚才生成的hex文件,在这个工程目录objects文件夹里选中。

打开之后,下面这些其他的配置,我们暂时先保持默认,目前对下载程序影响不大,等会儿再细说。

然后在开始编程之前,我们还需要配置boot引脚,让STM32执行BootLoader程序,

否则的话点击开始编程,它会一直卡在这个位置,

🌼🌼如何进入BootLoader?先演示流程,等会儿再解释。

第一步找到这里的跳线帽,这两个跳线帽是用来配置Boot引脚的,把这里上面一个跳线帽,也就是配置Boot0引脚的跳线帽拔下来,然后插在右边两个针脚配置boot0为1。

第二步,按一下复位键,让程序重新开始运行。

这里切换boot引脚之后,一定要再按下复位键。因为STM32只有在刚复位时才会读取boot引脚,程序运行之后切换boot引脚是无效的。

这样芯片就进入BootLoader的程序了。

进入BootLoader的程序之后,STM32执行的程序就是不断接收USART1的数据,刷新到主闪存。

然后再回到FlyMcu软件,点击开始编程,这时就可以看到下载过程成功运行。

最后显示下载成功,

这样我们这个led闪烁的程序就通过BootLoader成功刷新到主闪存里了。

回到STM32,目前led还没有亮起来。

这是因为目前STM32还在执行BootLoader的的刷机程序,我们还需要把boot引脚换回来,

然后按一下复位,

研究两个问题

接下来我们来研究两个问题。

第一个问题,boot引脚是干什么的?,为什么这样配置?Bootloader又是干什么的?串口下载的原理是什么?

第二个问题,每次下载程序都要拔插两遍跳线帽,太麻烦了,有没有什么解决方法?

第一个问题,串口下载的原理

先看一下第一个问题,串口下载的原理。之前这里我们讲过了STM32的存储器印象,

在ROM区的0800位置存储的就是编译后的程序代码,把什么程序写到这个位置,STM32就执行什么样的程序,如果想使用串口下载程序的话,我们只需要把程序数据通过串口发给STM32,STM32接收数据,然后刷新到0800这一块位置就行了。

但是接收并转存数据这个过程本身也是程序,如何利用程序实现自我更新,这是一个问题。就像是一个机器人给自己换电池一样。换电池需要先拆掉旧电池,再装上新电池。但是一旦把旧电池拆掉,机器人本身就无法工作了。这样之后装上新电池的工作就没法完成了。所以为了能让机器人自己换电池,我们还需要再额外做一个小机器人,需要换电池的时候,就启动这个小机器人。小机器人完成整个换电池工作之后,再返回大机器人运行。

同理STM32通过串口进行程序的自我更新,就需要这样一个小机器人。这个小机器人就是BootLoader。BootLoader是st公司写好的一段程序代码,这段程序的存储位置就是ROM区的最后1FFF F000这段区域叫做系统存储器,存储的是BootLoader程序,或者叫自举程序,用途是程序自我更新,串口下载。

在更新过程中,BootLoader接收USART1数据刷新到程序存储器。这时,主程序就处于瘫痪状态,更新好之后,再启动主程序,执行新程序。这就是串口下载的流程。

如果给手机或电脑重装个系统的话,就可以类比一下。这个BootLoader就相当于是手机的刷机模式或者电脑的PE系统,是辅助主程序进行自我更新的。

如何启动大机器人,如何启动小机器人?这就由boot引脚来决定,这里有一个启动配置

🌿当boot0为0时,就是主闪存,也就是0800的位置开始运行,启动大机器人。

🌿当boot0为1,Boot1为0时,就是从系统存储器,也就是1FFF F000开始运行,启动小机器人。

🌿最后还有一个boot0和boot1都为1,从sram,也就是2000开始运行,这个比较高级,我们暂时不用。

然后下面写了在系统复位后SYCLK的第四个上升沿Boot引脚的值将被锁定。所以说每次切换boot引脚之后,都要按一下复位。

到这里串口下载的原理就讲完了。

第二个问题,有没有办法不用每次下载都要切换跳线帽

接下来我们来研究一下第二个问题,每次下载都要切换跳线帽,太麻烦了,怎么解决?

刚才我们说了,想要程序自我更新,就必须有一个切换小机器人的过程,boot0引脚和RST复位引脚必须得有高低电平变化,

能不能接两根线,当电脑点击下载时,自动设置一下boot0引脚和RST的电平?答案是可行的,我们可以看一下这个串口模块的电路。

🌿🌿这里除了TXD和RXD用于通信的引脚。还有RTS、CTS和DTR和DSR这些引脚都是流控的引脚,我们不使用流控,可以把它们当做普通的GPIO来控制

其中RTS和DTR是输出引脚,我们可以用这两个引脚来控制Boot0和RST。当然在外围还需要设计一个控制电路,一般可以用两个三极管开关来进行控制。有关电路部分,大家可以网上搜一下STM32一键下载电路,里面都有设计方案和解释。

当我们这个串口具备一键下载电路之后,就不需要再频繁切换跳线帽和按复位键了,非常方便。

回到FlyMcu,这下面有个下拉框,就是用来配置DTR和RTS的,是高电平复位,还是低电平复位等等配置。

🌿🌿这些配置需要根据一键下载电路来选,一般最常用的配置是DTR的低电平复位,RTS高电平进BootLoader。

我们这个硬件目前没有一键下载电路,所以还是得手动切换跳线帽。这里的下拉框选择哪个就无所谓了。

这里的信息可以看到,选好之后,下载之前会给DTR和RTS置高低电平,以此切换大机器人和小机器人工作。

🌿🌿没有一键下载电路,我们还有一个缓招可以使用,就是勾上这里的编程后执行,

这样试一下,先切换跳线帽,复位,进入BootLoader,led就没有闪烁了。

如果选择了编程后执行,需要去掉选项字节的这个勾,要不然下载之后会提示执行失败,

我们去掉一下,点击开始编程,下载完成,不需要我们换回跳线帽,这时程序直接就运行了,LED就闪烁了。

为什么?

我们看一下这里这里多了一条:成功从0800开始运行。

这就是在软件上人工加入了一条跳转指令,这样就能执行主程序了,但是这样只是一次性的。

此时我们按一下复位键,LED不亮,程序仍然是BootLoader,不过这样也可以省很多步骤。我们可以切换到BootLoader,不断的进行下载调试,然后调试完成之后再切换回主程序,这样就只需要最开始和最后切换一下跳线帽就行了。

接下来我们继续来探索一下这个软件,这里面还有很多有意思的东西。

2.🚚软件功能介绍

读flash

首先是这个读flash

我们点一下,然后放到桌面,起个名字led,保存,

这样就可以把芯片里的程序读出来,现在提示读取完成。

此时你的桌面上就出现了程序文件,

这个功能能帮助我们干什么呢?

🌿🌿比如你看到别人用STM32做了一个产品,你觉得不错,就可以抄一下它的PCB板,然后程序文件又可以通过这个软件读出来,这样就可以大批量山寨别人的产品了。

不过STM32也可以配置读保护,这个等会儿再说。

但是反过来,如果你开发产品不注意这个问题的话,是不是一不小心程序就泄露了!

我们看一下读出来的这个文件,这个文件是.bin格式的,里面记录的就是STM32从0800开始存储的程序数据,bin格式是没有地址信息的原始数据文件我们之前生成的hex文件是有地址信息的。不过,作为记录程序代码的文件,这两种格式的作用其实都是一样的。

这里还有一个问题,就是这个FlyMcu下载的时候只能选择hex文件。如果选择bin文件的话。下载就会报一个这样的错误。

但是它读出来只能选bin文件读出来的,bin文件不能再下载回去了。可能是软件设计的时候,没考虑到这个功能。

不过等会儿我们介绍STLINK utility的时候,这两个文件就都可以选择了。

清除芯片

接下来看下这个清除芯片的功能

点击这个清除芯片按钮,这可以把主程序区域全部擦除,擦除之后所有的数据都是FF。

读器件信息

之后点击读器件信息,

这时会把芯片的序列号等信息读出来。

然后这里显示这个芯片的flash容量是256K,但其实我们这个C8T6芯片的标称flash容量是64K,属于中容量产品。这里读出来却是256K,直接成大容量产品了。具体原因大家可以去了解一下,但是这个问题并不是很大。

选项字节

最后我们再来研究一下这个选项字节,

选项字节也是ROM区最后的一小块存储单元,用途是存储一些独立于程序代码的配置参数。

究竟是哪些参数?有什么作用?

在这里就可以看到了,点击设置选项字节的按钮,选择STM32F1的这一项。

这个界面展示的就是选项字节里面的参数了,

第一块就是读保护。刚才我们说了,如果你做产品不开启读保护别人,很容易就把你的程序偷走了。所以为了保护程序的安全,选项字节里就有一个参数,可以配置读保护。这里可以看到设成A5允许读出,设成FF阻止读出。

⚠️⚠️⚠️⚠️⚠️注意,如果阻止读出,再回到keil下载程序时就会失败。如果因为读保护导致下载失败需要再到这个地方来取消读保护取消一下就正常了。

⚠️⚠️⚠️⚠️⚠️另外在取消读保护时,会同时清空芯片的程序这样程序就不会被偷走了这就是读保护功能。

接着下面还有一些硬件选项字节,其中包括看门狗,停机和待机模式不产生复位,还有几位用户应该大概也许可以使用。然后是用户数据字节,这些东西如果你有需求的话可以自己使用。

选项字节里面的参数有什么好处?

  • 🌿选项字节的数据相当于是世外桃源,无论程序怎么更新,选项字节的数据都可以不变,你可以用这些字节来存储不随程序变化而变化的参数。
  • 🌿另外选项字节还有一个好处,就是可以用上位机很方便的修改。比如我们这个FlyMcu或者STLINK utility,在上位机里可以直接修改选项字节的内容,可以用作一些产品中可供用户配置的参数。

然后继续看最后一项,就是写保护

🌿🌿这里可以对flash的每几个页单独进行写保护。比如在主程序的最后几页写了一些自定的数据,不想在下载的时候被擦除了,就可以把最后几页设置写保护锁起来,设置写保护之后就无法再写了。如果想再次写入的话,解除写保护就行了。

另外注意一下设置写保护之后再下载,如果需要写入保护区的话就会出错

比如把最前面几页写保护了,下载一次之后再下载,肯定就会出错。

😅😅😅这个软件设计不能单独写入选项字节,只能下载flash,顺便写入选项字节。但写保护了,下载不了。下载不了就不能解除写保护,形成死循环。

过我们等会儿讲另一个软件的时候,就可以单独配置选项字节,就可以解决这个问题了。

以上就是选项字节的所有内容,总共就是四大块,

  • 🌿读保护、
  • 🌿写保护、
  • 🌿硬件参数
  • 🌿和用户参数。

配置好之后可以点击采用这个设置。

然后把编程到flash时,写选项字节勾上

在执行正常的下载流程就能更新选项字节的配置了。

然后,我们就来看下一个软件。

3.🚚STLINK Utility下载

软件安装步骤

STLINK utility这个软件是需要安装的,这是一个安装包,直接双击安装。

里面直接下一步----yes----安装路径可以指定一下或者直接默认路径也没问题----下一步----最后提示安装STLINK的驱动,直接点是就行了----完成----finish

安装之后,桌面就会出现一个软件图标,双击打开这就是软件的主界面。

首先演示一下,用这个软件下载程序的流程。

下载程序的流程

🎄🎄首先硬件这部分只需要把STLINK连接好就行了,串口可以不接

然后跳线帽恢复成两个,都在最左边。

按下复位,之后点击这个按钮进行连接。

连接好之后,这里就会出现一些器件信息了。

🌿🌿下面这个大框框展示的就是STM32里面0800开始的程序数据。

目前这个芯片刚被查除过,所以数据全是FF。

如果点击这个保存,就可以把这个程序给存起来,可以选择保存为hex或者bin文件。

点击这个按钮,就是断开链接,

点击这个橡皮擦就是擦除芯片

如果要下载程序的话,先点第一个按钮打开文件,这里文件类型支持hex和bin。

我们可以打开刚才读出来的bin文件,然后点击这个编程按钮,这一栏显示的就是程序文件的路径。

也可以在这里直接打开要下载的程序文件,之后点击start开始下载。

下载完成之后,我们看到led闪烁

这就是STLINK utility下载程序的流程,和keil内置的下载基本是一样的,非常简单。

选项字节

然后再讲一下这个软件选项字节的配置,

可以点击target

这就可以打开选项字节的配置页面了,选项字节的内容和刚才讲的一样。

  • 第一块就是读保护,可以使能或失能。
  • 第二块也是硬件参数,这些灰色的选项,我们这个型号的芯片没有。
  • 之后就是第三块用户参数
  • 四块是写保护,内容都一样。

这里配置好之后,直接点击下方的apply,就能直接单独更改选项字节的参数了,不像FlyMcu,必须要下载程序,顺便更新选项字节。

所以如果有芯片被读保护,或者写保护锁住了,就可以到这个地方来解除保护。

这就是这个软件的选项指节配置。

STLINK固件更新

最后再给大家介绍一个STLINK固件更新的功能。

我们可以点击STLINK ,然后选择第一个

然后打开这个界面,就是给STLINK更新固件的

然后点击这里的connect连接,

这里提示重启一下

点击确定后,拔掉板子的STLINK重新插,插好之后点击连接。

可以看到目前这个STLINK的固件是J29.S7。

最新的固件是J37.S7,如果要升级的话,点yes就能给STLINK升级固件了,

需要升级的话,可以到这里来看看。

不过如果你使用没问题的话,也不需要经常更新,能用就行。

内容到这里就结束了,希望能给大家之后的学习和应用带来帮助,下节继续。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462681.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中的日期与时间对象:LocalDate类、LocalTime类、LocalDateTime类、DateTimeFormatter类

在 Java 中,LocalDate、LocalTime 和 LocalDateTime 是 java.time 包中的类,用于表示日期、时间和日期时间。这些类提供了不可变的日期与时间对象,是 Java 8 及以后版本中引入的一部分,用于替代旧的 java.util.Date 和 java.util.…

Java基于微信小程序的美食推荐系统(附源码,文档)

博主介绍:✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

杨辉三角形

大家好,今天给大家分享一下杨辉三角形是如何打印的,首先我们来看看它的原理。 我们先来看结果 1.如果把它看为一个二维数组(包括后面的空格),那么它数字的这边是一个直角三角形,它的第一列和对角线都为1&a…

C语言进阶之我与指针的爱恨情仇(1)

一.前言 我们在初阶《指针》初阶C语言-指针-CSDN博客已经讲过了一些基础知识,知道了关于指针的一些概念-> 1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间 2.指针的大小是固定的4/8个字节(32位平台/64位平台&#xf…

构建灵活、高效的HTTP/1.1应用:探索h11库

文章目录 构建灵活、高效的HTTP/1.1应用:探索h11库背景这个库是什么?如何安装这个库?库函数使用方法使用场景常见的Bug及解决方案总结 构建灵活、高效的HTTP/1.1应用:探索h11库 背景 在现代网络应用中,HTTP协议是基础…

基于语音信号的说话人识别

基于语音信号的说话人识别 摘 要 语音是人类相互交流和通信最方便快捷的手段。如何高效地实现语音传输存储或通过 语音实现人机交互,是语音信号处理领域中的重要研究课题。语音信号处理涉及数字信号处理、语音学、语言学、生理学、心理学、计算机科学以及模式识别…

车载软件架构 --- 智能汽车软件

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧…

实际案例说明用基于FPGA的原型来测试、验证和确认IP——如何做到鱼与熊掌兼得?

作者:Philipp Jacobsohn,SmartDV首席应用工程师 Sunil Kumar,SmartDV FPGA设计总监 本系列文章从数字芯片设计项目技术总监的角度出发,介绍了如何将芯片的产品定义与设计和验证规划进行结合,详细讲述了在FPGA上使用硅…

UiPath调用Python脚本的完整示例

一、主要步骤: 1、创建Python脚本 2、安装UiPath.Python.Activities库 3、使用方法: a、添加python作用域 b、加载python脚本 c、调用python方法 d、获取python对象 e、显示Python结果的消息对话框 二、详细步骤 1、安装UiPath.Python.Activities库 …

【简易进度条的实现】

独夜无伴守灯下,清风对面吹............................................................................................. 文章目录 前言 一、【行缓冲区的引入】 1、【问题提出】 2、【\r和\n】 3、【简易倒计时程序】 二、【简易进度条的实现】 process_bar.…

【已解决】cra 配置路径别名 @ 后,出现 ts 报错:找不到模块“@/App”或其相应的类型声明。ts(2307)

cra 配置路径别名 后,出现 ts 报错:找不到模块“/App”或其相应的类型声明。ts(2307) 然后可以在 tsconfig.json 中配置 baseUrl 和 paths : {"compilerOptions": {"target": "es5","lib": [&quo…

es拼音分词器(仅供自己参考)

github地址:https://github.com/infinilabs/analysis-pinyin(各种版本,对接es版本) 拼音分词器存在的问题: 1、是直接将每个字的拼音返回和一段话的拼音首字母返回,不能很好的分词。 2、不会保留中文&am…

为什么大家都在学数字孪生呢?

随着物联网,大数据、人工智能等技术的发展,新一代信息技术与制造业正在深度融合,人们与物理世界的交互方式正在发生转折性的变化。数字化转型正在成为企业的重要战略,而数字孪生则成为全新的焦点。 当下,在数字技术和…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-11

文件下载与邀请翻译者 学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么&#xff…

LLM Observability: Azure OpenAI (一)

作者:来自 Elastic Vinay Chandrasekhar•Andres Rodriguez 我们很高兴地宣布 Azure OpenAI 集成现已全面上市,它提供了对 Azure OpenAI 服务性能和使用的全面可观察性!另请参阅本博客的第 2 部分 虽然我们已经提供了对 LLM 环境的可视性一段…

HTML 基础标签——表格标签<table>

文章目录 1. `<table>` 标签:定义表格2. `<tr>` 标签:定义表格行3. `<th>` 标签:定义表头单元格4. `<td>` 标签:定义表格单元格5. `<caption>` 标签:为表格添加标题6. `<thead>` 标签:定义表格头部7. `<tbody>` 标签:定义表格…

第7章 内容共享

第 7 章 内容共享 bilibili学习地址 github代码地址 本章介绍Android不同应用之间共享内容的具体方式&#xff0c;主要包括&#xff1a;如何利用内容组件在应用之间共享数据&#xff0c;如何使用内容组件获取系统的通讯信息&#xff0c;如何借助文件提供器在应用之间共享文件…

基于 Python 的 Django 框架开发的电影推荐系统

项目简介&#xff1a;本项目是基于 Python 的 Django 框架开发的电影推荐系统&#xff0c;主要功能包括&#xff1a; 电影信息爬取&#xff1a;获取并更新电影数据。数据展示&#xff1a;提供电影数据的列表展示。推荐系统&#xff1a;基于协同过滤算法实现个性化推荐。用户系…

【高等数学】3-2多元函数积分学

1. 二重积分 可以想象你有一块不规则的平面薄板,它在一个平面区域上。二重积分就是用来求这个薄板的质量(假设薄板的面密度函数是)。 把区域划分成许多非常小的小方块(类似于把一块地划分成很多小格子),在每个小方块上,密度近似看成是一个常数,然后把每个小方块的质量加…

喜欢央卫 5.5.5 | 老年人专用电视直播APP

喜欢央卫是一款专门为老年人设计的电视直播APP。这款APP的名字非常简单直白&#xff0c;内容也符合老年人的口味。它提供了常用的央卫频道&#xff0c;还有V4和V6的不同线路&#xff0c;同时支持超多地方频道。界面简洁易用&#xff0c;非常适合教老人如何看电视。 大小&#…