文章目录
前言
由于去年大一的时候学了会单片机。参加了蓝桥杯单片机组,虽然只获得了一个省奖,但是带领我进入了单片机的世界,今年参加嵌入式组,由于之前一段时间去学CV去了,所以现在趁着这个机会复习一下stm32
硬件资源
嵌入式竞赛实训平台(CT117E-M4) 是北京国信长天科技有限公司设计、生产的一款“蓝桥杯全国软件与信息技术专业人才大赛-嵌入式设计与开发科目”专用竞赛平台,平台以STM32G431RBT6为主控芯片,预留扩展板接口,可为用户提供丰富的实验场景。
下载方式
由于板载了DAP Link,所以直接接入CN2(USB-Type)接口,并保证NRST、SWCLK、SWDIO的跳线连接,即可下载程序
CT117E-M4还板载了USB转串口功能默认与STM32G431RBT6的USART1连接。
模块总结
时钟树
选择24M外部高速晶振
- CubeMx配置
LED灯
- CubeMx配置
PC8-PC15:
- GPIO output lebel:High
- GPIO mde:Output Push Pull
- GPIO Pull:No pull-up and no pull-down
PD2:
- GPIO output lebel:Low
- GPIO mde:Output Push Pull
- GPIO Pull:No pull-up and no pull-down
void LED_Disp(unsigned char Led)
{
//**将所有的灯熄灭
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8
|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
//根据ucLed的数值点亮相应的灯
//LD8-LD1对应Led的8个位
HAL_GPIO_WritePin(GPIOC, Led<<8, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
}
- 我们可以在hal_gpio.h里找到所有hal库关于gpio的函数,其他的功能的函数都可以在对应的.h文件里找到
键盘
- CubeMx配置
- GPIO mde:Input mode
- GPIO Pull:No pull-up and no pull-down
unsigned char Key_Scan(void)
{
unsigned char unKey_Val = 0;
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == GPIO_PIN_RESET)unKey_Val = 1;
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == GPIO_PIN_RESET)unKey_Val = 2;
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2) == GPIO_PIN_RESET)unKey_Val = 3;
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)unKey_Val = 4;
return unKey_Val;
}
void Key_Proc(void)
{
//利用嘀嗒定时器消抖减速
if((uwTick - uwTick_Key)<100) return;
uwTick_Key = uwTick;
ucKey_Val = Key_Scan();
unKey_Down = ucKey_Val & (ucKey_Old ^ ucKey_Val);
ucKey_Up = ~ucKey_Val & (ucKey_Old ^ ucKey_Val