版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
绿色低碳设计理念STM32EMBEDDEDTECHNOLOGYSTM32嵌入式技术及应用
任务3-4篮球赛电子计分器的设计与实现
项目三
篮球赛电子计分器的设计与实现掌握端口复用与重映射
实现综合应用项目培养系统设计能力目录CONTENTS01任务目标明确学习目标与核心技能要求02知识储备理解端口复用与重映射功能03任务实施Proteus计分器电路设计按键模块与数码管模块设计04任务总结核心知识点与技能提升总结05提升训练与评价知识问答、实践操作与评价USART1接口重映射配置示例计分器功能需求分析01TASKOBJECTIVES任务目标核心任务设计并实现一个基于STM32微控制器的篮球赛电子计分器,通过4位数码管实时显示双方比分,利用4个按键实现比分的调整(包括加分)、调换显示以及清零功能,确保计分器操作简便、运行稳定,并预留扩展接口以适应未来功能升级。理论知识端口复用与重映射功能JTAG/SWD调试接口配置多模块协同编程状态机编程方法实践技能按键输入电路设计按键消抖处理比分调整逻辑实现综合应用项目开发绿色理念低功耗模式设计按键中断唤醒系统优化数据处理流程降低系统整体功耗学习成果完成本任务后,你将掌握端口复用与重映射技术,能够设计按键输入电路,实现多模块协同编程,完成综合应用项目开发。这些能力为后续学习更复杂的嵌入式应用打下了坚实基础。02KNOWLEDGERESERVE端口复用及重映射功能(一)问题引入在任务3的设备文件smg.c中,使用了RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE)和GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE)语句来使能APB2外设时钟上的功能复用,这是因为任务中涉及到了PB3和PB4这两个接口,如果不进行特定的重映射设置,数码管的位选端将无法正常工作。端口复用概念什么是端口复用?STM32微控制器拥有众多内置外设,这些外设的外部引脚具有双重身份:它们既可以作为普通的GPIO引脚使用,也可以作为内部外设的特定功能引脚。这种设计被称为端口复用。示例说明例如,串口1(USART1)的发送(TX)和接收(RX)引脚默认为PA9和PA10。当我们将这两个引脚配置为串口1的TX和RX功能,而非普通的GPIO功能时,就实现了端口复用。重映射概念什么是重映射?STM32的每个内置外设通常都有多个输入输出引脚,这些引脚在默认情况下具有固定的位置。然而,为了满足不同设计需求,STM32引入了外设引脚重映射的概念。这意味着,除了默认的引脚位置外,还可以通过设置重映射寄存器,将外设的引脚映射到其他位置。设计优势这种设计使得设计工程师能够更灵活地安排引脚的布局和功能,优化PCB设计,减少信号干扰,提高系统可靠性。主功能与重映射功能在STM32微控制器中,每个引脚都有一个主功能,这是系统复位后的默认功能。例如,PB0和PB1的主功能就是它们自己作为GPIO引脚的功能。因此,对于这类引脚,仅需要进行GPIO设置即可按照GPIO的操作流程使用。但是,像PB3和PB4这样的引脚,默认主功能是JTAG调试引脚,需要进行重映射才能作为普通GPIO使用。知识储备:02KNOWLEDGERESERVE端口复用及重映射功能(二)PB3和PB4的特殊性根据STM32官方数据手册中的说明,PB3和PB4这两个接口在微控制器复位后的默认主功能并非作为GPIO端口,而是作为JTAG调试引脚(JTDO和JNTRST)。如果不进行特定的重映射设置,这两个引脚无法作为普通GPIO使用,数码管的位选端将无法正常工作。端口重映射配置流程1开启复用时钟RCC_APB2PeriphClockCmd(
RCC_APB2Periph_AFIO,
ENABLE);使能APB2总线上的AFIO时钟,AFIO用于配置STM32的引脚复用功能。2关闭JTAG功能GPIO_PinRemapConfig(
GPIO_Remap_SWJ_JTAGDisable,
ENABLE);禁用JTAG功能并启用SWD接口,释放PB3和PB4引脚。3正常配置IO按照普通GPIO的配置流程,配置PB3和PB4为推挽输出模式。完整配置代码voidGPIO_Config(void)
{
//
开启AFIO时钟
RCC_APB2PeriphClockCmd(
RCC_APB2Periph_AFIO,
ENABLE);
//
禁用JTAG,启用SWD
GPIO_PinRemapConfig(
GPIO_Remap_SWJ_JTAGDisable,
ENABLE);
GPIO_InitTypeDef
GPIO_InitStructure;
//
使能GPIOB时钟
RCC_APB2PeriphClockCmd(
RCC_APB2Periph_GPIOB,
ENABLE);
//
配置PB3和PB4
GPIO_InitStructure.GPIO_Pin
=
GPIO_Pin_3
|
GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode
=
GPIO_Mode_Out_PP;
//
推挽输出
GPIO_InitStructure.GPIO_Speed
=
GPIO_Speed_50MHz;
GPIO_Init(GPIOB,
&GPIO_InitStructure);}绿色低碳理念通过端口复用,设计工程师可以在不增加额外硬件的情况下实现更多的功能。这将减少生产过程中的材料消耗和能源消耗,符合绿色低碳发展的原则。知识储备:02KNOWLEDGERESERVEUSART1接口重映射配置示例USART1重映射说明本节通过实现STM32微控制器中USART1接口的重映射功能配置,可以将USART1的TX(发送)和RX(接收)引脚从默认的PA9和PA10引脚移动到其他引脚上,以满足特定的硬件设计需求。参考《STM32中文参考手册》中的复用重映射和调试I/O配置寄存器(AFIO_MAPR),其中的两位可控制USART1在GPIO端口的重映射。重映射引脚默认引脚USART1_TXPA9USART1_RXPA10重映射后引脚USART1_TXPB6USART1_RXPB7重映射优势释放PA9和PA10引脚用于其他功能,优化PCB布局设计。配置步骤1.初始化相关时钟RCC_APB2PeriphClockCmd(
RCC_APB2Periph_GPIOA
|
RCC_APB2Periph_GPIOB
|
RCC_APB2Periph_USART1
|
RCC_APB2Periph_AFIO,
ENABLE);2.配置GPIO引脚PB6配置为复用推挽输出,PB7配置为浮空输入。3.配置USART1重映射GPIO_PinRemapConfig(
GPIO_Remap_USART1,
ENABLE);4.配置USART1参数设置波特率、数据位、停止位、校验位等参数。知识储备:03TASKIMPLEMENTATION任务实现要求功能需求分析根据任务目标,可以将篮球赛电子计分器设计任务分成四个部分来完成。在任务3-3的基础上进行修改,结合任务2-1的按键控制技术,实现一个完整的电子计分器系统。四大功能模块1动态显示比分在任务3-3基础上修改,通过4位数码管实时显示A队和B队的比分。2调整比分使用按键修改变量值,实现A队和B队加分功能。3交换显示使用按键实现两队比分交换显示功能。4清零比分按键被按下后,将两队比分清零。按键功能分配按键1(K1)PA0A队加分(+1分)按键2(K2)PA1B队加分(+1分)按键3(K3)PA2交换两队比分按键4(K4)PA3清零比分任务实施:03TASKIMPLEMENTATION任务实施:电子计分器电路设计(一)电路组成微控制器STM32F103R6作为电路核心,VDD接电源,GND接地,NRST用于复位。PB0~PB7连接数码管段选,PC0~PC3连接数码管位选。七段数码管选用2个两位共阳极数码管,PB0~PB7作为段码输出,通过74HC573连接到数码管A~G、DP段,PC0~PC3作为位码输出。按键输入电路包含4个按键,每个按键一端接地,另一端通过10KΩ上拉电阻连接到PA0~PA3引脚。引脚分配段选输出PB0~PB7→74HC573→数码管段位选输出PC0~PC3→4位数码管COM按键输入PA0~PA3→4个功能按键电路设计说明电子计分器电路由微控制器、数码管显示电路、按键输入电路三部分组成。微控制器负责数据处理和扫描控制,数码管实时显示比分,按键实现用户交互。通过合理的电路设计,可以实现稳定可靠的计分器功能。03TASKIMPLEMENTATION任务实施:电子计分器电路设计(二)按键输入电路设计电路连接每个按键一端接地,另一端通过10KΩ上拉电阻连接到微控制器的PA0~PA3引脚。当按键按下时,相应引脚电平变为低电平,微控制器检测并处理这一输入。按键消抖机械按键在按下和释放时会产生抖动,需要通过硬件或软件方式消除抖动影响。软件消抖方法:检测到按键按下后延时10-20ms再次检测,确认按键确实被按下。按键可靠性按键电路的可靠性对系统稳定性至关重要。合理选择上拉电阻值(10KΩ),确保按键检测的准确性和稳定性。按键消抖原理按键抖动现象●机械按键在按下和释放时,触点会产生多次通断●抖动时间一般为5-20ms●如果不处理,会导致一次按键被识别为多次软件消抖实现if(KEY
==
0)
{
//
检测按键按下
Delay(10);
//
延时10ms消抖if(KEY
==
0)
{
//
再次检测//
确认按键按下,执行相应操作
}}消抖效果通过软件消抖,可以有效消除按键抖动的影响,确保每次按键只被识别一次,提高系统的稳定性和可靠性。03TASKIMPLEMENTATION任务实施:电子计分器程序设计-逻辑分析程序逻辑设计篮球赛计分系统设计为:在无任何按键操作的常态下,系统将持续动态地在数码管上显示两个表示双方比分的关键变量A与B的当前数值。一旦检测到有按键被激活,系统将依据被按下按键的具体功能,精准地对A或B两个变量的数值进行相应的调整,以确保完全符合比赛计分的任务需求。程序流程图1系统初始化初始化数码管、按键等外设,设置初始比分A=0,B=0。2显示比分调用数码管显示函数,实时显示A队和B队的当前比分。3扫描按键调用按键扫描函数,检测是否有按键被按下。4执行操作根据按键值执行相应操作:加分、交换、清零。5循环执行返回步骤2,持续显示比分并检测按键。按键处理逻辑按键1(K1)case1:
A++;
break;
//
A队加分A队比分加1分按键2(K2)case2:
B++;
break;
//
B队加分B队比分加1分按键3(K3)case3:
t=A;
A=B;
B=t;
break;
//
交换比分交换A队和B队的比分按键4(K4)case4:
A=B=0;
break;
//
清零比分将A队和B队比分清零03TASKIMPLEMENTATION任务实施:按键模块设计按键设备文件key.c#include"key.h"#include"smg.h"u8
key_up=1;
//
按键松开标志voidKEY_config(void)
{
GPIO_InitTypeDef
gpio;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,
ENABLE);
gpio.GPIO_Mode
=
GPIO_Mode_IPU;
//
内部上拉输入
gpio.GPIO_Pin
=
GPIO_Pin_0
|
GPIO_Pin_1
|
GPIO_Pin_2
|
GPIO_Pin_3;
GPIO_Init(GPIOA,
&gpio);}uint16_t
KEY_scan(void)
{
if(key_up
&&
(KEY1==0||KEY2==0||
KEY3==0||KEY4==0))
{
Delay(100);
//
延时消抖
key_up
=
0;
if(KEY1==0)
return1;
//
K1按下else
if(KEY2==0)
return2;
//
K2按下else
if(KEY3==0)
return3;
//
K3按下else
if(KEY4==0)
return4;
//
K4按下
}
else
if(KEY1==1
&&
KEY2==1
&&
KEY3==1
&&
KEY4==1)
key_up
=
1;
//
按键释放return0;
//
无按键按下}KEY_config配置PA0~PA3为内部上拉输入模式KEY_scan扫描按键,返回按键编号(1-4)或0消抖处理延时100ms消除按键抖动03TASKIMPLEMENTATION任务实施:数码管模块设计数码管设备文件smg.c#include"stm32f10x.h"#include"smg.h"extern
uint8_t
count;extern
uint16_t
bitCode[];
//
位码extern
uint8_t
dispCode[];
//
段码voidSEG_config(void)
{
GPIO_InitTypeDef
gpio;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO
|
RCC_APB2Periph_GPIOB
|
RCC_APB2Periph_GPIOC,
ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,
ENABLE);
gpio.GPIO_Mode
=
GPIO_Mode_Out_PP;
gpio.GPIO_Speed
=
GPIO_Speed_2MHz;
GPIOB->ODR
&=
0xff00;
gpio.GPIO_Pin
=
GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|
GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_Init(GPIOB,
&gpio);
gpio.GPIO_Pin
=
GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_Init(GPIOC,
&gpio);}voidSEG_disp(uint8_t
a,
uint8_t
b)
{
GPIO_Write(GPIOC,
bitCode[count]);
switch(count)
{
case0:
GPIO_Write(GPIOB,
dispCode[a/10]);
break;
//
A队十位case1:
GPIO_Write(GPIOB,
dispCode[a%10]);
break;
//
A队个位case2:
GPIO_Write(GPIOB,
dispCode[b/10]);
break;
//
B队十位case3:
GPIO_Write(GPIOB,
dispCode[b%10]);
break;
//
B队个位
}
Delay(20);
GPIO_Write(GPIOC,
0x0ffF0);
//
消隐
Delay(20);
count++;
if(count>=4)
count=0;}SEG_config初始化GPIOB和GPIOC,配置输出模式SEG_disp动态显示A队和B队比分消隐处理延时20ms后执行消隐,消除残影03TASKIMPLEMENTATION任务实施:主程序设计主程序LQSJFQ.c#include"stm32f10x.h"#include"smg.h"#include"key.h"//
定义位码和段码表const
uint16_t
bitCode[]
=
{0xfff1,0xfff2,0xfff4,0xfff8};const
uint8_t
dispCode[]
=
{0xC0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xF8,0x80,0x90};uint8_t
count=0;intmain(void)
{
uint8_t
A=0,
B=0;
//
A队和B队比分
uint8_t
t;
//
临时变量
SEG_config();
//
初始化数码管
KEY_config();
//
初始化按键while(1)
{
SEG_disp(A,
B);
//
显示比分
t
=
KEY_scan();
//
扫描按键switch(t)
{
case1:
A++;
break;
//
A队加分case2:
B++;
break;
//
B队加分case3:
t=A;
A=B;
B=t;
break;
//
交换比分case4:
A=B=0;
break;
//
清零比分default:
break;
}
}}初始化初始化数码管和按键模块显示调用SEG_disp显示比分扫描调用KEY_scan检测按键处理根据按键值执行相应操作03TASKIMPLEMENTATION任务实施:工程编译与调试编译步骤1添加文件添加LQSJFQ.c、key.c、smg.c到工程2修改工程名将工程名修改为LQSJFQ3编译工程点击Rebuild按钮编译生成HEX文件编译成功0Error(s),0Warning(s)仿真验证1加载HEX文件将LQSJFQ.hex加载到STM32芯片2运行仿真点击运行按钮,观察数码管显示3功能测试测试按键功能:加分、交换、清零调试技巧●检查按键消抖●检查数码管显示●检查变量更新绿色低碳理念在后续学习中,程序设计还有很大提升空间,如动态调整显示亮度、优化数据处理流程、进入低功耗模式等,以降低系统功耗,实现绿色低碳设计。04
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西工商职业学院《文化管理学》2024-2025学年第二学期期末试卷
- 火锅店内部合伙制度规定
- 煤矿内部加油站管理制度
- 煤矿掘进队内部考核管理制度
- 理发店内部规章制度大全
- 监理内部工作会议制度
- 监理项目部内部例会制度
- 科室内部例会制度
- 空气开关内部管理制度
- 篮球队内部管理制度
- 和美乡村建设工程监理规划
- 化工厂生产车间管理制度
- 2026年莱芜职业技术学院单招职业倾向性测试题库含答案详解
- 2026年服务服务创新培训课件
- 2025年云计算在智慧养老服务体系中的应用前景分析报告
- 直播基地运营协议书
- 2024-2025学年花城版六年级音乐下册全册教案
- 九年级下册《出师表》理解性默写(带答案)
- 5S管理培训资料
- 软件测试岗位晋升述职报告
- 2026年辽宁轻工职业学院单招综合素质考试题库含答案
评论
0/150
提交评论