第54章 战舰STM32开发板综合实验
- 格式:pdf
- 大小:1.28 MB
- 文档页数:28
基于STM32的船舶防撞预警系统设计作者:叶磊韩金霞来源:《中小企业管理与科技·中旬刊》2020年第06期【摘; 要】为保障船舶航行安全,降低中小型船舶间碰撞事故的发生率,论文基于STM32和激光模块设计了一套船舶防撞预警系统。
本系统通过激光模块进行船舶间航行距离的检测,实现航行预警功能,具有成本低、体积小、安装方便等优势。
【Abstract】In order to ensure the safety of ship navigation and reduce the occurrence probability of collision between small and medium-sized ships, the paper designs a set of shipcollision avoidance early-warning system based on STM32 and laser module. The system can detect the sailing distance between ships by laser module and realize the navigation early-warning function. It has the advantages of low cost, small size and convenient installation.【关键词】STM32;激光;防撞;预警【Keywords】STM32; laser; collision avoidance; early-warning【中图分类号】TP399; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;【文献标志码】A; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;【文章编号】1673-1069(2020)06-0194-031 引言传统的航行避碰主要依靠工作人员的瞭望,并通知值班驾驶员,由驾驶员根据航行经验进行分析判断后采取避让措施,这要求船舶操作人员具有较强的专业能力和极高的综合素质。
实验三STM32基础实验(未定稿)一硬件设计要求1、设计STM32F407核心板的底板,要求有4个按键、8个LED、1个LCD接口(1602或5110或其他)、4位7段数码管2、引出SPI、I2C、UART、ADC、DAC、PWM接口线二软件设计要求1、编写简单I/O程序,能用板上的4个基本按键控制8个LED灯的亮灭。
(扩展要求:设计不同的流水灯或呼吸灯效果,并能用按键切换)2、编写1602或5110液晶模块的显示程序,能在液晶屏上显示欢迎信息。
(扩展要求:能模拟广告牌的文字滚动显示效果,并用按键控制滚动方向和速度)3、编写数码管的动态扫描程序,能在数码管上显示键码或按键计数。
(扩展一:能用4位数码管显示流水灯效果,测试每一段的好坏。
扩展二:能用4位数码管设计简单的电子时钟,通过按键来切换时分或分秒显示)4、编写串口通信程序,能通过PL2303模块与PC端进行通信,能发送按键信息到PC端,能在液晶屏上显示PC端下发的字符串。
(扩展要求:能设计PC端的通信程序,不使用现有的串口调试软件与STM32通信,能通过自制程序控制STM32实验板上的LED、蜂鸣器、数码管和液晶屏)。
5、综合设计:一个低频信号发生器。
具备以下功能:使用STM32的DAC输出功能,生成10KHz以下方波、三角波、锯齿波、正弦波。
能在液晶屏上显示频率、信号类型。
可用按键切换输出信号类型、频率。
要求波形尽可能平滑完整,幅度固定1V;频率可调1KHz~10KHz,步进100Hz。
使用STM32的定时器信号捕捉功能,测量标准信号发生器输出的正弦波信号频率,测量范围100Hz~3MHz,精度1%三软件评分指标1~4基本功能必做,5仅完成信号发生器或频率计任一的部分功能,及格1~4基本与扩展完成,5仅完成信号发生器或频率计其一,中或良1~5全部完成,优秀注意:优、良必须所有功能在同一程序中完成,可通过按键切换功能,评测过程不允许单片机复位或重新上电。
基于STM32的船载机械手控制系统设计目录1. 内容概览 (2)1.1 船载机械手控制系统研究背景与意义 (3)1.2 研究内容与方法 (4)1.3 论文结构安排 (5)2. 系统设计概述 (7)2.1 系统设计要求 (8)2.2 系统设计原理 (10)2.3 系统总体设计方案 (12)3. 硬件设计 (13)3.1 主控制器选型与配置 (15)3.2 传感器模块设计与选型 (16)3.3 电机驱动模块设计与选型 (17)3.4 通信接口模块设计与选型 (19)4. 软件设计 (20)4.1 控制算法设计 (21)4.2 驱动程序开发 (23)4.3 人机交互界面设计 (24)5. 系统测试与调试 (25)5.1 系统硬件搭建与连接 (26)5.2 系统软件编写与调试 (28)5.3 系统功能测试与性能评估 (29)6. 结论与展望 (30)6.1 研究成果总结 (31)6.2 存在问题与改进措施 (33)6.3 未来工作展望 (34)1. 内容概览项目背景与目标:介绍船载机械手控制系统的应用领域及市场需求,明确设计目标,阐述项目的重要性和价值。
系统概述:简述船载机械手控制系统的基本构成,包括硬件组成和软件功能,展示系统的主要工作流程和交互界面。
核心组件选型与设计:重点阐述选用STM32系列微控制器的原因,包括其性能优势、适用性分析等。
同时介绍机械手的硬件设计,包括机械结构、驱动系统、传感器配置等。
软件架构与算法实现:描述基于STM32的软件架构设计,包括操作系统选择、控制算法(如路径规划、定位控制等)实现,以及如何通过代码实现对机械手的精确控制。
通信系统构建:介绍船载机械手与岸基指挥中心的数据交互方式,包括通信协议的选择与实现,数据传输的安全性和可靠性保障措施。
系统集成与测试:阐述如何将各个部分集成到一个完整的控制系统,包括调试过程、测试方案及测试结果的分析。
操作界面与用户体验:描述机械手的操作界面设计,包括界面功能、操作流程、用户体验优化等方面,确保操作人员能够便捷、高效地使用该系统。
基于STM32原子战舰板内存管理源码详解走到今天,已经开始涉及到计算机核心一点的东西了---内存管理。
通过本实验的学习,能够较为深刻体会到“指针是c语言的灵魂”这句话的分量。
自然对c语言的能力要求就高很多了。
最近有点乱,但是有关嵌入式系统的学习不曾怠慢过。
本文是基于原子老师的c源码,自己的学习的心得,只是对源码作出自己的学习理解,同时也插补了一些涉及到的c语言知识。
贴出本文不为别的,一来但愿能有有缘人看到本文,提出指正;二来,为了那些不眠的夜,安慰一下自己。
1,内存管理简介内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。
其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。
内存管理的实现方法有很多种,他们其实最终都是要实现2个函数:malloc和free;malloc函数用于内存申请,free 函数用于内存释放。
先回顾一下c语言知识:计算机内存一般分为静态存储区用以存储全局变量或常量和动态存储区用以存储函数内部变量或形参或函数运算结果。
malloc()函数的作用是请求系统在内存的动态存储区分配若干个字节的存储空间,函数的返回值是首字节地址,可见malloc ()函数是指针类型。
free(P)的作用是释放指针变量P所指向的动态空间。
本章,我们介绍一种比较简单的办法来实现:分块式内存管理。
下面我们介绍一下该方法的实现原理,如图所示(示意图):内存块1 内存块2 内存块3 ……内存块n 内存池| | | |第1项第2项第3项……第n项内存管理表<<-----分配方向|malloc,free等函数图解:从上图可以看出,分块式内存管理由内存池和内存管理表两部分组成。
内存池被等分为n块,对应的内存管理表,大小也为n,内存管理表的每一个项对应内存池的一块内存。
内存管理表的项值代表的意义为:当该项值为0的时候,代表对应的内存块未被占用,当该项值非零的时候,代表该项对应的内存块已经被占用,其数值则代表被连续占用的内存块数。
stm32开发板课程设计一、课程目标知识目标:1. 理解STM32开发板的基本结构、性能参数及工作原理;2. 掌握STM32的编程环境搭建,包括Keil、STM32CubeMX等工具的使用;3. 学习并掌握C语言在STM32开发中的应用,如GPIO、中断、定时器等基本功能的使用;4. 了解嵌入式系统设计的基本流程,能够阅读并理解STM32相关技术文档。
技能目标:1. 能够独立搭建STM32开发环境,进行程序编写、编译、下载及调试;2. 运用所学的知识,设计并实现简单的嵌入式项目,如LED灯控制、温度传感器数据采集等;3. 学会分析并解决STM32编程过程中遇到的问题,提高实际操作能力。
情感态度价值观目标:1. 培养学生对嵌入式系统开发的兴趣,激发学习热情,提高自主学习能力;2. 培养学生团队合作意识,学会在团队中发挥个人优势,共同解决问题;3. 强化学生的实践操作能力,培养动手能力,使学生在实践中感受科技的魅力,增强创新意识。
分析课程性质、学生特点和教学要求,本课程旨在通过理论与实践相结合的方式,使学生在掌握STM32开发板基本知识的基础上,提高嵌入式系统设计能力,培养创新精神和实践能力。
课程目标分解为具体学习成果,便于后续教学设计和评估。
二、教学内容1. STM32开发板基础知识:介绍STM32的硬件结构、性能特点,使学生了解开发板的基本组成和功能;- 教材章节:第一章 嵌入式系统概述,第三节 STM32微控制器简介2. 开发环境搭建:讲解如何安装Keil、STM32CubeMX等编程工具,并指导学生进行实际操作;- 教材章节:第二章 嵌入式系统开发环境,第一节 开发工具的安装与配置3. C语言编程基础:回顾C语言基础知识,重点讲解在STM32中的应用;- 教材章节:第三章 C语言编程基础,第二节 C语言在嵌入式系统中的应用4. STM32基本功能编程:学习GPIO、中断、定时器等模块的使用,并通过实例进行讲解;- 教材章节:第四章 STM32微控制器编程,第一、二、三节5. 嵌入式项目实践:设计并实现简单嵌入式项目,如LED灯控制、温度传感器数据采集等;- 教材章节:第五章 嵌入式项目实践,第一节 基础实践项目6. 课程总结与拓展:对所学知识进行总结,拓展学生思维,提高创新能力;- 教材章节:第六章 课程总结与拓展,第一节 知识总结与拓展教学内容安排和进度:共16课时,按以上教学内容顺序进行,每部分分配相应课时,保证学生充分掌握所学知识。
基于STM32的嵌⼊式软件开发基础-实验指导书(经典)实验⼀基于STM32的嵌⼊式软件开发基础实验⼀、实验⽬的1 、掌握嵌⼊式软件开发流程2 、学会使⽤嵌⼊式软件开发⼯具3 、学会使⽤⽆限循环架构开发简单的嵌⼊式应⽤程序4 、学会使⽤单步⁄全速运⾏、设置断点和观察变量⁄寄存器等⽅法调试嵌⼊式应⽤程序5 、掌握通⽤数字输⼊输出(GPIO)和系统定时器(SysTick)的软件开发⽅法6 、理解发光⼆极管(LED)和按键(Push Button)的驱动原理7 、掌握常⽤的延时(Delay)实现技巧⼆、实验环境1 、硬件:ALIENTEK STM32F103嵌⼊式开发板2 、软件:REALVIEW MDK或IAR EWARM三、实验内容1 、LED点亮实验:使⽤GPIO的相关知识,设计基于⽆限循环架构的嵌⼊式应⽤程序,点亮开发板上绿⾊LED和红⾊LED;2 、流⽔灯实验⼀:使⽤GPIO和延时循环,设计基于⽆限循环架构的嵌⼊式应⽤程序,使开发板上的绿⾊LED和红⾊LED先后轮流闪烁;3 、按键控制LED实验:使⽤GPIO的相关知识,设计基于⽆限循环架构的嵌⼊式应⽤程序,实现以下功能:1 )当按下WK_UP按键时,开发板上的绿⾊LED点亮;当释放WK_UP按键时,开发板上的绿⾊LED熄灭;2 )当按下KEY1按键时,开发板上的红⾊LED点亮;当释放KEY1按键时,开发板上的红⾊LED熄灭;3 )当同时按下WK_UP和KEY1按键时,开发板上的红⾊LED和黄⾊LED同时点亮;当同时释放WK_UP和KEY1按键时,开发板上的红⾊LED和黄⾊LED同时熄灭;4 、流⽔灯实验⼆:使⽤GPIO和SysTick的相关知识,设计基于⽆限循环架构的嵌⼊式应⽤程序,使开发板上的绿⾊LED和红⾊LED先后轮流闪烁,每个LED点亮和熄灭的时间各为1s,并在程序中定义⼀个8位⽆符号变量来记录红⾊LED闪烁的次数;调试程序,在REALVIEW MDK或IAR EWARM的调试界⾯中,通过在程序中设置断点,并打开变量观察窗⼝,加⼊对应的变量,全速运⾏,随着红⾊LED的闪烁,跟踪⽤来记录红⾊LED闪烁次数的8位⽆符号变量的变化情况;四、硬件设计1 、发光⼆极管(LED )与嵌⼊式微控制器(STM32F103)的接⼝电路2 、按键与嵌⼊式微控制器(STM32F103)的接⼝电路五、软件设计1 、LED 点亮实验程序:程序(略)2 、流⽔灯实验⼀程序:程序(略)3 、按键控制LED 实验程序:程序(略)4 、流⽔灯实验⼆程序:程序(略)六、实验结果1 、LED 点亮实验结果:⽤⽂字或图⽚描述该程序运⾏的结果2 、流⽔灯实验⼀结果:⽤⽂字或图⽚描述该程序运⾏的结果3 、按键控制LED 实验结果:⽤⽂字或图⽚描述该程序运⾏的结果4 、流⽔灯实验⼆结果:⽤⽂字或图⽚描述该程序运⾏的结果(调试界⾯中断点设置和变量观察窗⼝的截图) PA8 PD2PA15 PA13实验⼆基于STM32的嵌⼊式软件开发⾼级实验⼀、实验⽬的1 、了解中断控制器(NVIC)的内部结构和⼯作原理2 、深⼊理解中断机制,学会编写中断服务函数3 、学会使⽤中断服务函数开发基于前后台架构的较复杂的嵌⼊式应⽤程序4 、掌握串⾏通信的原理,掌握通⽤同步串⾏收发器(USART)的软件开发⽅法5 、熟悉模数转换的过程和性能指标,掌握模数转换器(ADC)的软件开发⽅法⼆、实验环境1 、硬件:ALIENTEK STM32F103嵌⼊式开发板2 、软件:REALVIEW MDK或IAR EWARM三、实验内容1 、LED闪烁实验:使⽤NVIC(含SYSTICK)和GPIO的相关知识,编写中断服务函数,并开发基于前后台架构的嵌⼊式应⽤程序,使开发板上绿⾊LED每1s闪烁⼀次;2 、串⼝输出实验:使⽤USART的相关知识,设计基于⽆限循环架构的嵌⼊式应⽤程序,通过USART1向PC 的串⼝发送“Hello World!”,其中USART1和串⼝的波特率设置为115200bps,数据格式设置为8位数据位、⽆奇偶校验位、1位停⽌位和⽆数据流控制;在PC上运⾏串⼝调试助⼿,找到对应的COM⼝并作设置波特率和数据格式后打开,再运⾏开发板上的程序,观察串⼝调试助⼿中接收区的数据,验证程序的运⾏结果;3 、MCU温度检测实验:使⽤NVIC(含SYSTICK)、USART和ADC的相关知识编写程序,编写中断服务函数,并开发基于前后台架构的嵌⼊式应⽤程序,每隔1s通过⽚内温度传感器和模数转换器(ADC)检测MCU的温度并通过USART1将其输出到PC的串⼝上;在PC上运⾏串⼝调试助⼿,找到对应的COM⼝并作相应设置后打开,再运⾏开发板上的程序,观察PC上串⼝调试助⼿中接收区的数据变化情况,验证程序的运⾏结果;四、硬件设计1 、发光⼆极管(LED)与嵌⼊式微控制器(STM32F103)的接⼝电路PA8PD22 、按键与嵌⼊式微控制器(STM32F103)的接⼝电路3 、嵌⼊式微控制器(STM32F103)的温度传感器和ADC 的模块图五、软件设计1 、LED 闪烁实验:程序(包括主函数源⽂件和中断服务函数源⽂件)2 、串⼝输出实验:程序(略)3 、MCU 温度检测实验:程序(包括主函数源⽂件和中断服务函数源⽂件)六、实验结果 1 、LED 闪烁实验:⽤⽂字或图⽚描述该程序运⾏的结果2 、串⼝输出实验:⽤⽂字或图⽚描述该程序运⾏的结果(程序运⾏中PC 上串⼝调试助⼿的截图) 3 、MCU 温度检测实验:⽤⽂字或图⽚描述该程序运⾏的结果(程序运⾏中PC 上串⼝调试助⼿的截图)PA15。