蓝桥杯赛前准备(二)配置IO口

蓝桥杯赛前准备(二)配置篇

 

(参考往届)

我上网查了很多资料,也看了很多篇博客,赛前需要基本掌握的操作有几个,其中有GPIO、LED、ADC、PWM、LCD(比赛会给例程)、E²P ROM、BUTTON、中断以及时钟的配置,所以呢,这篇文章会总结一下以上有关IO口配置的操作。

 

(实物图)

此图为CT117E竞赛板的各个基本模块分布。

各位在观看之前最好事先熟悉好蓝桥杯嵌入式开发的CT117E板子上的外设,最好还要了解扩展板的内容。(扩展板本文章不做说明)

本文章以库函数版本为例,给大家讲解一部分模块的配置。

  1. 因为你使用各个模块都要启用时钟嘛,为了节省时间跟减去不必要的麻烦,所以我会一开始就使能APB2的四个时钟,分别是GPIOA,GPIOB,GPIOC,GPIO4。(这种操作仅限于比赛,平时还望各位正常配置)

           RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, ENABLE);

           RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE);

           RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC, ENABLE);

  RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD, ENABLE);

 

还有在要添加三个结构体,方便后面的配置。

(引脚、ADC采集、串口)

GPIO_InitTypeDef GPIO_InitStruct;

ADC_InitTypeDef ADC_InitStruct;

USART_InitTypeDef USART_InitStruct;

 

  1. 注意LCD,官方会给出例程,你只需理解程序就好(当然你也可以自己配置)我是根据官方给出的例程直接使用,因为这说一个有时间限制的考试,只有五个小时,各位也可以权衡一下时间,在main函数里面我是这样配置的

STM3210B_LCD_Init();

LCD_Clear(Blue);

LCD_SetBackColor(Blue);

LCD_SetTextColor(White);

 

  1. LED灯的配置有一点是需要注意的,因为LED灯的部分引脚跟LCD是公用的,所以不可以像平时一样配置引脚,但是这也不是意味着LED灯不能使用了,因为LED灯连上了74HC573锁 存器。当N_LE(PD2)引脚为高电平时,H_D0~H_D7的电平信号可以直接传到右端给到LED,如果N_LE(PD2)引脚为低电平的时候,无论H_D0~H_D7的电平信号如何改变,74HC573锁存器右端的电平信号都不会改变。简单来理解的话,就是单独使能PD2这个引脚,当PD2为高电平时,PC8-15的电平会控制LED,但是PD2为低时则对LED不会有任何影响。所以在LED方面的配置为

GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_All;

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStruct.GPIO_Speed= GPIO_Speed_2MHz;

GPIO_Init(GPIOC, &GPIO_InitStruct);

 

GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_2;

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStruct.GPIO_Speed= GPIO_Speed_2MHz;

GPIO_Init(GPIOD, &GPIO_InitStruct);

 

GPIO_SetBits(GPIOD, GPIO_Pin_2);

GPIO_SetBits(GPIOC, GPIO_Pin_All);

GPIO_ResetBits(GPIOD, GPIO_Pin_2);

  1. 接下来为BUTTON(按钮),四个按键B1,B2,B3,B4分别对应的引脚为PA0,PA8,PB1,PB2。须记住,按下的时候,电平为低。

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_8;

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;

GPIO_Init(GPIOA, &GPIO_InitStruct);

 

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;

GPIO_Init(GPIOB, &GPIO_InitStruct);

  1. ADC采集配置,配置引脚为PB8

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;

GPIO_InitStruct.GPIO_Mode= GPIO_Mode_AIN;

GPIO_Init(GPIOB, &GPIO_InitStruct);

 

ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;

ADC_InitStruct.ADC_ContinuousConvMode = ENABLE;

ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStruct.ADC_ExternalTrigConv = DISABLE;

ADC_InitStruct.ADC_NbrOfChannel = 1;

ADC_InitStruct.ADC_ScanConvMode = DISABLE;

ADC_Init(ADC1, &ADC_InitStruct);

 

ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_13Cycles5);

ADC_ITConfig(ADC1,ADC_IT_AWD,ENABLE);

ADC_ResetCalibration(ADC1);

 

while(ADC_GetResetCalibrationStatus(ADC1));

ADC_StartCalibration(ADC1);

while(ADC_GetCalibrationStatus(ADC1));

 

  1. USART配置,PA2设置为串口发送引脚,PA3为串口接收引脚。

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;   //tx

GPIO_InitStruct.GPIO_Mode= GPIO_Mode_AF_PP;

GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStruct);

 

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;   //rx

GPIO_InitStruct.GPIO_Mode= GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStruct);

 

USART_InitStruct.USART_BaudRate = 115200;

USART_InitStruct.USART_HardwareFlowControl =USART_HardwareFlowControl_None;

USART_InitStruct.USART_Mode= USART_Mode_Rx|USART_Mode_Tx;

USART_InitStruct.USART_Parity = USART_Parity_No;

USART_InitStruct.USART_StopBits =USART_StopBits_1;

USART_InitStruct.USART_WordLength =USART_WordLength_8b;

 

USART_Init(USART2, &USART_InitStruct);

USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);

USART_Cmd(USART2, ENABLE);

NVIC_Config();    //优先级配置

/*******************************************************/

NVIC_Config();函数如下

void NVIC_Config()

{

NVIC_InitTypeDef NVIC_InitStruct;

 

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

NVIC_InitStruct.NVIC_IRQChannel=USART2_IRQn; //38也可以

NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;

NVIC_Init(&NVIC_InitStruct);

}

CT117E板子上有个引脚对应的模块

本次文章仅限于某部分的IO口的配置操作,大家配置的时候最好参考STM32F103RBT6的芯片手册以及其库函数进行配置,不要一味的看例程,要自己手动写。

总结下来之后的代码如下图

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一份可能的蓝桥杯赛前训练计划: 1. 熟悉考试内容和题型:了解蓝桥杯考试的内容和题型,包括编程语言、数据结构与算法、计算机基础知识和实践能力等方面的内容,并准备相关资料和练习题目。 2. 制定学习计划:根据自己的水平和时间安排,制定一份具体的学习计划,包括每天的学习目标、练习时间和计划完成时间等,以保证充分利用时间进行学习和练习。 3. 提高编程能力:进行编程练习,提高编程能力,特别是数据结构和算法的实践能力。可以参加在线编程竞赛、练习题目和刷题等方式来提高编程能力。 4. 提高计算机基础知识:学习计算机基础知识,包括计算机组成原理、操作系统、计算机网络、数据库等方面的知识,以提高程序的效率和优化能力。 5. 实践能力:进行实践练习,包括操作系统和网络配置、数据库设计和开发、Web开发等方面的实践,以提高实践能力和解决问题的能力。 6. 团队协作:参加团队协作项目,锻炼团队合作和沟通能力,同时学习项目管理和软件开发流程等相关知识。 7. 模拟考试:进行模拟考试,以检验自己的学习成果和考试准备情况,同时找出自己的弱点和不足,加以改进和提高。 8. 调整状态:保持良好的身体状态和心态,保证充足的睡眠和饮食,调整好心态,保持积极向上的心态。 以上是一份可能的蓝桥杯赛前训练计划,具体的训练计划需要根据个人情况和水平来制定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值