蓝桥杯嵌入式——模块框架配置

        记录一下蓝桥杯嵌入式各个模块的赛前框架配置

目录

一. LCD

1. 复制模板文件

2. 修改lcd.c文件

3. 下载配置

4. 添加代码

二. LED

1. 引脚配置

2. 添加代码

三. KEY

1. 引脚配置

2. 添加代码

key.h

key.c

main.c

3. key.c添加至项目

四. TIM定时器

1. 引脚配置

2. 添加代码 

main.c


一. LCD

1. 复制模板文件

        找到资源数据包对应路径下的lcd模板,复制到要编写的路径下

2. 修改lcd.c文件

        打开工程文件,对lcd.c进行修改。

        拉到540行对3个函数修改,LCD_WriteRegLCD_WriteRAM_PrepareLCD_WriteRAM

        三个函数都是一样的修改

3. 下载配置

4. 添加代码

#include "stdio.h"

__IO uint32_t Lcd_uwTick;

char a[21]={0}; //第一行

void lcd(void);


void lcd(void)
{
	if(uwTick-Lcd_uwTick<200)return;
	Lcd_uwTick=uwTick;
	
	sprintf(a,"hello");
	LCD_DisplayStringLine(Line0, (unsigned char *)a);
	
}

二. LED

1. 引脚配置

        追求速度,直接在MX_GPIO_Init()里添加初始化

__HAL_RCC_GPIOD_CLK_ENABLE();

    GPIO_InitStruct.Pin = GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

2. 添加代码

void LED_dis(uint8_t a);
void LED_undis(uint8_t a);
void LED_t(uint8_t a);

//主函数里,循环上一步
LED_undis(0xff);
//循环里
LED_dis(0x01);
LED_t(0x02);
HAL_Delay(500);

void LED_dis(uint8_t a)
{
	HAL_GPIO_WritePin(GPIOC, a<<8, GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
}
void LED_undis(uint8_t a)
{
	HAL_GPIO_WritePin(GPIOC, a<<8, GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
}
void LED_t(uint8_t a)
{
	HAL_GPIO_TogglePin(GPIOC, a<<8);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
}

三. KEY

1. 引脚配置

        直接在MX_GPIO_Init()里加

    /*Configure GPIO pins : PA0 */
    GPIO_InitStruct.Pin = GPIO_PIN_0 ;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
		/*Configure GPIO pins : PB0 PB1 PB2 */
    GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

2. 添加代码

key.h

#include "main.h"

void key_scan(void);


extern uint8_t aj;

key.c

#include "key.h"

__IO uint32_t Key_uwTick;

void key_scan(void)
{
	if(uwTick-Key_uwTick<200)return;
	Key_uwTick=uwTick;
	
	if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0)
	{
		HAL_Delay(100);
		if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0)
		{
			aj=1;
		}
	}
	if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==0)
	{
		HAL_Delay(100);
		if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==0)
		{
			aj=2;
		}
	}
	if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)==0)
	{
		HAL_Delay(100);
		if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)==0)
		{
			aj=3;
		}
	}
	if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==0)
	{
		HAL_Delay(100);
		if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==0)
		{
			aj=4;
		}
	}
	
}

main.c

uint8_t aj;

//循环里
key_scan();

//
void lcd(void)
{
	if(uwTick-Lcd_uwTick<200)return;
	Lcd_uwTick=uwTick;
	
	sprintf(a,"hello:%d",aj);
	LCD_DisplayStringLine(Line0, (unsigned char *)a);
	
}

3. key.c添加至项目

四. TIM定时器

        这时还是得用上STM32CubeMX了

1. 引脚配置

2. 添加代码 

        (1)复制tim.h和tim.c文件或者新建文件复制内容,添加到项目

        (2)再复制stm32g4xx_it.c里的代码

        (3)在stm32g4xx_hal_conf.h文件里开启TIM模块

        (4)在stm32g4xx_hal_tim.h文件里找到HAL_TIM_PeriodElapsedCallbackHAL_TIM_Base_Start_IT

main.c

#include "tim.h"

    MX_TIM6_Init();
	HAL_TIM_Base_Start_IT(&htim6);

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance==TIM6)
	{
		lcd();
		LED_t(0x02);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值