- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
单片机自行车转向灯控制系统的软件设计案例
目录
TOC\o1-3\h\u26518单片机自行车转向灯控制系统的软件设计案例 1
326701.1STM32固件库开发概述 1
325901.2程序代码结构 1
25841.3main.c结构说明 3
267731.4按键功能软件设计 4
151671.5ADXL345的软件设计 7
309291.6模式切换的软件设计 8
1.1STM32固件库开发概述
在设计过程中选择了一套STM32固件库,其中设置了很多函数,在应用过程中可通过函数对各个寄存器进行操作控制。可实现的功能主要如初始化IO口或者寄存器集成而满足效率要求。这种情况下写代码的时候可不需要考虑到寄存器。
STM32在应用过程中可直接操作寄存器,此种模式下进行开发过程中,需要用户对寄存器的应用熟悉了解。不过其中的寄存器数量多这种情况下全部熟悉这些寄存器也不满足实际情况,因而应该进行一定的总体认识。由于单片机的代码主要有C语言编写,这种语言在编程领域被广泛的应用,其属于一种面向过程的语言,为满足寄存器的操作要求,可直接将寄存器操作封装在函数中,从而为其后的操作提供支持和便利。固件库开发可很好的满足效率要求。
由于官方固件库的强大,这样在进行设计和编程时组建代码就可满足要求。在设计过程中具体分析考虑函数的预期功能,对固件库函数的使用相关情况熟悉了解,从而高效的利用。
1.2程序代码结构
这种代码的优势表现为方便调试,易维护,在不断的修改基础上实现设计目的。相关情况如下:
1.按照硬件区分,各种模块进行分区分文件放置。
1.同类型硬件设置在不同的函数中而提高处理性能。
1.不同的函数根据相关的应用情况进行设置确定出适宜的关键字。
1.函数的命名根据其功能相关情况进行确定。
5.中断相关的函数主要是根据功能进行设计确定出宏定义。
6.一般情况下不应用到局部静态变量。
单片机模块化编程过程中应该对这些予以重视,确保实现功能目标。
表4-1程序中.c文件功能表
文件名
可实现的功能
acc_sensor.c
在应用过程中可进行加速度传感器的读、写相关操作
break_light.c
初始化和处理函数,满足对应的控制应用要求
button.c
按键定义进行一定的设置函数
light.c
呼吸灯模式相关的中断控制,且实现一定调节目的
state.c
初始化相关的函数
led.c
初始化和中断处理,满足灯控制相关要求
power.c
定义引脚,为其后的调用提供支持
xl345.c
SPI接口处理,满足一定的数据通信要求
以上.c文件的功能存在一定的差异性,不过对比分析可知其结构基本上相一致,以button.c为例对其功能情况进行具体说明。
表4-2button.c结构说明
结构
功能
举例
头文件
定义添加到文件
#includestm32f10x.h
#includeutils.h
#includebutton.h
宏定义
将引脚、中断处理等系统底层的功能起别名,方便阅读
#defineBTN_RIGHT_PINGPIO_Pin_1
#defineBTN_RIGHT_IRQ EXTI1_IRQn
中断初始化
设定中断的名字、优先级、触发方式,管脚映射等
staticvoid_initButton(void)
staticvoid_initAntiShakeTimer(void)
中断处理函数或者功能处理函数
根据预期功能执行相应的处理任务
voidBTN_LEFT_IRQROUTINE(void)
voidBTN_ANTISHAKE_IRQROUTINE(void)
1.3main.c结构说明
本文设计过程中根据控制要求,而确定出适宜主函数,其是基于模块化模式设计的,相对简洁。功能封装处理,这样也使得主函数很简洁。
Main.c中代码如下:
#includestm32f10x.h
#includeutils.h
#includeacc_sensor.h
#includedisplay_state.h
#includebutton.h
#includeled.h
#includexl345.h
#includepower.h
intmain()
{
PWR_SetUnusedPin();
HW_CommonInit();
LED_Init(); //初始化升压电路引脚
HW_InitSysTick();
ACC_Init();
STATE_Init();从ADXL读数据,开启定时器
BTN_Init();
您可能关注的文档
- 2025《PSD工作原理和激光位移测距系统概述》1900字.docx
- 2025《汽车后悬架螺旋弹簧刚度及应力计算案例》1700字.docx
- 2025《互联网企业审计风险研究的概念界定及理论基础概述》7000字.docx
- 2025《破产撤销权行使存在的问题及建议分析概述》14000字.doc
- 2025《某五层建筑结构的荷载计算过程案例》1500字.docx
- 2025《基于PID控制算法的无人机轨迹跟踪分析概述》2000字.docx
- 2025《基于JSP的停车场管理设计的技术基础及系统分析案例》2800字.docx
- 2025《水轮机组故障机理分析概述》2600字.docx
- 2025《Z3040摇臂钻床的PLC控制系统硬件设计案例概述》860字.docx
- 2025《某水利工程施工安全风险评价计算的案例分析概述》4000字.docx
文档评论(0)