纯人工翻译中文版本,STM32CubeMX用户手册中文版,STM32CubeMX用户手册中文版UM1718-翻译版.菜鸟到高手,显得有些霸气哈,不过的确如此,官方带给我们一个比较实用的stm32的工具。
这个工具就是STM32CubeMX,昨天玩freeRTOS的时候就提到过。
说到freeRTOS,这里就多说两句。
全局变量,在任务间相互访问的时候也是需要临界保护的,不然可能会出现奇怪的问题。
不过我们可以关掉时间片调度,任务间可以访问全局变量而不用加保护(不等于菜鸟可以随意代码)。
关闭了时间片调度,只有发生vTaskDelay的时候才会上下文切换。
只要代码合理访问全局变量可以不加保护的。
因此代码也不是可以任意书写的,关于freeRTOS的问题,多看看源码,一切都会有答案。
源码较少,这里就不过多介绍。
关闭时间片不是网上说的configUSE_TIME_SLICING这个宏定义,老鸟发现这个宏压根没用哈,嘿嘿。
阅读源码可以找到相关宏配置。
不过不建议关闭,时间片调度也可以让一个任务在执行一定时间后切换到其他就绪任务去执行。
如果有freeRTOS相关问题,可以留言给我。
废话说多了点哈,继续我们的STM32CubeMX。
下面我们来讲讲这个工具的作用,讲完后,可以自己下载一个试试,挺简单不多介绍。
到官网下载STM32CubeMX,并安装。
1:芯片选型打开STM32CubeMX,我们点击newproject,我们就可以进行芯片选型,如果你下载了打开了这个工具,是不是很惊讶,stm32的所有产品型号都在里面,而且左下提供了资源勾选,比如你要以太网支持,勾选以太网选项,所有的支持以太网的stm32芯片才会被显示,旁边还有个max的栏目指示了芯片最多支持该功能的个数。
空白的一般默认只有一个。
下图是我勾选以太网的截图。
上图不仅提供了芯片,还提供了价格,是否在售,封装,存储,频率等一些列信息。
除了cpu资源可以选型外,上面还提供了脚多少,存储大小等非常灵活的选型方式。
我们选择其中一个的单片机后。
右上部分给我们提供了完美的支持。
第一个选项提供了改cpu的特性,我们可以大概的了解选中的cpu资源。
第二个选项提供该cpu框图,截图图片太大,这里就不截图了。
第三个选项提供了cpu文档,这个文档非常多也非常全面,基本不用在网上东找西找了,主要给硬件工程师用。
第四个选项提供了cpu的相关设计资源,软件编程文档,给软件工程师用,非常全面,包括网上很少用到的文档资料,比如系统移植相关的底层资料(堆栈,指令,汇编)。
第五个选项提供了芯片购买途径,这个每个人自己选择吧。
第六个选项开始工程,芯片选好了,就可以开始工程。
2:设定芯片。
芯片选好后,可以开始设定芯片。
这就是软件工程师的好帮手呀。
比如我要以太网功能,勾选上以太网即可,他就会自动分配出芯片对应的以太网接口。
如下图:上面我选了标准的MII接口。
很多人可能就不理解,你勾了个以太网,咋报错了。
老鸟告诉你为啥变红了,stm32有个复杂的功能就是io口复用,勾选mii后分配的io口和spi2以及iis口重合了,所以这个工具非常智能的提示了出来,非常神奇吧。
告诉你他们不能使用了。
还有些变黄了,说明他们可以选择性使用,真是太方便了,省去了查资料慢慢找io的痛苦。
比如我们还要给它个外部时钟。
我们勾选时钟即可,响应的时钟脚就会分配出来。
如果要将某个脚设置成输入输出那就更简单了,鼠标点选对应的io口选择对应功能即可,比如我单击PA6,它的所有功能可以轻松选择:软件使用比较简单,不过多解释,一看就明白,设置完芯片功能后,我们就设定系统各项功能时钟。
选择时钟设置页面(clockconfiguration)时钟轻松设定,如下图,简单明了,不过多解释了:时钟配置完成后,可以切换到configuration选项对功能进一步设定,里面参数都是常用的功能,设置较为简单。
就不多举例了,比如网络功能里面设置mac地址等。
3:生产初始化代码经过上面的图形化设定,我们可以直接生产初始化代码。
省去我们查阅资料慢慢配置的的环节,时间更多的利用在应用层设计。
点击project下面的生成代码选项。
输入工程名(根据你项目需要起名),这里我就随便输入一个名字。
设定好相关参数。
点击ok即可。
顺便说下,这个工具是配带教程的,我这里只是告诉大家有这样个工具可以加速开发,具体设置参考官方教程。
生成后打开文件夹内容如下:上图的inc和src文件夹里面是生成的主要代码,其他几个文件夹里面的东西,大家可以根据自己需要选择。
src文件夹文件如下:打开熟悉的ma
2023/8/19 21:31:32 11.41MB stm32 仿真
1
安装完JDK后,会在%JAVA_HOME%/jdk文件夹下生成一个src.zip,此文件夹对应rt.jar中的java源码,但细心研究后发现rt.jar中sun包下的文件不存在,也就是说sun包下的java源码并没有打包到src.zip中,可以到http://download.java.net/openjdk/jdk7/该网站上下载相应的OpenJDK源码,在\openjdk\jdk\src\share\classes目录下即为rt.jar的源码,此文件夹下的源代码是完全的,包括sun包下的java文件。
此包为JDK1.8sun包源码
2023/8/19 9:19:04 30.75MB JDK Sun 源码 rt.jar
1
机械制造工艺学课程设计使我们学完了大学的全部基础课、技术基础课以及大部分专业课之后进行的.这是我们在进行毕业设计之前对所学各课程的一次深入的综合性的总复习,也是一次理论联系实际的训练,因此,它在我们四年的大学生活中占有重要的地位。
本指导书可以给我们提供实用的指导!
2023/8/18 7:13:50 1.89MB 机械制造 工艺学 课程设计
1
javascript某著名培训机构内部视频资料,自己花了3万多培训的学习资料,全程录制。
学完就是大师了。
2023/8/18 2:14:31 64B js
1
通过穷举的方法恢复某个用户曾经发布的所有微博配图,在新浪公司完蛋之前应该能找到,大约10年吧。


每次都要修改右上角那个字符串,改成你自己发的微博配图的文件名前几位(位数同默认数值的位数)没事闲的就给弄了一个仅供娱乐,真想恢复图片的联系公关公司去勿喷附件是vb.net2010格式的源码,exe也在里面,在debug文件夹找
2023/8/15 5:01:02 172KB vb.net
1
客户业务分为两种,第一种是申请从银行得到一笔资金,即取款或者借款。
第二种是向银行投入一笔资金,即存款或者还款。
VoidAction()银行有两个服务窗口,相应的有两个队列。
客户到达银行后先排第一个队。
queueq1;处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足,则立即排入第二个队queueq2;等候,直至满足时才离开银行;
否则业务处理完后立即离开银行。
每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中的客户,对能满足的申请者予以满足,不能满足的者重新排到第二个队列的队尾。
注意:在此检查过程中,一旦银行的资金总额少于或者等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列客户。
任何时刻都只开一个窗口。
假设检查不需要时间。
营业时间结束时所有客户立即离开银行。
【基本要求】利用动态存储结构实现模拟。
【测试数据】一天营业开始时银行拥有的款额为10000(元)初始化total=10000;,营业时间为600(分钟)。
设定营业时间为早上9:00-晚上19:00其他模拟参量自定,注意测定两种极端的情况:一是两个到达事件之间的间隔时间很短,而客户的交易时间很长,另一个恰好相反,设置两个到达事件的间隔时间很长,而客户的交易时间很短。
这个有点焦虑【实现提示】事件有两类:到达银行的和离开银行。
初始时银行现存资金总额为total。
开始营业后的第一个事件是客户到达,设定一个计数器count来计算一天内客户人数,初始化为0营业时间从0到closetime。
到达事件发生时随机地设置此客户的交易时间和距下一到达事件之间的时间间隔。
每一个客户要办理的款额也是随机确定的,用负值和正值分别表示第一类和第二类业务。
个人觉得用0、1、2、3分别表示取款、借款、存款、还款比较好。
变量total,closetime以及上述两个随机量的上下界均交互地从终端读入,作为模拟参数。
两个队列和一个事件表均要用动态存储结构实现。
需考虑设置离开事件,以及如何设计第二个队列的存储结构以获得较高的效率。
注意:事件表是按时间顺序有序的。
voidgetTime();
2023/8/14 4:07:50 5KB C++
1
安装完CodeBlocks后并不能立马运行,还需要安装编译器GCC
2023/8/13 18:18:11 85KB mingw
1
之前一直在CocoaChina上面潜水,虽然做iOS开发也快2年了,但是总觉得缺少了点什么。
以前查看英文API文档,有些细节总是记不住,每次看完之后也没什么印象。
忽然有一天有人向我抱怨说查看官方英文API文档太痛苦了,然后我就想如果我把一些常用的官方文档翻译为中文的话,或许可以帮助这批需要帮助的人,然后偶就心血来潮,开始了自娱自乐的翻译之旅。
帮助别人的同时,自己也获得快乐。
多线程编程在开发应用的时候非常有帮助。
比如你可以在后台加载图片,等图片加载完成后再在主线程更新等,或者在后台处理一些需要占用CPU很长时间的事件(比如请求服务器,加载数据等)。
要体会多线程编程的好处,还得多实战,结合使用多种多线程技术。
特别要注意RunLoop的使用,很多开发者在编写多线程应用的时候很少关注过RunLoop。
如果你仔细阅读并掌握RunLoop的细节,将会帮助你写出更优美的代码。
同步是多线程编程的老生常谈,估计大学时候大家都基本熟悉了同步的重要性。
本文在翻译过程中发现很多地方直译成中文比较晦涩,所以采用了意译的方式,这不可避免的造成有一些地方可能和原文有一定的出入,所以如果你阅读的时候发现有任何的错误都可以给我发邮件:xyl.layne@gmail.com
2023/8/13 9:57:02 1.39MB iOS开发 多线程 编程
1
linux下人脸识别算法,完整个的软件,基于QT,可以识别人脸,需要先训练,然后再识别,识别率虽然不是太高,但是完全是可以用的,功能强大。
2023/8/13 4:10:28 790KB linux 人脸识别 算法 检测
1
已经搭建完基础的平台,实现了简单的用上位机控制无人机的编队飞行,队形切换功能
2023/8/10 13:28:51 31.22MB C/C 开发-其它杂项
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡