CubeMX新建工程,选择芯片,配置时钟树,外部晶振以及调试接口。具体设置可参考使用cubemx配置stm32(二)__核心配置
然后配置GPIO口,电路图看到按键按下时接地为低电平,不按下应该为高电平,所以选择内部上拉
配置完成后生成代码
定义全局变量,和函数,在main函数的while中循环调用,两个函数通过一个全局变量 flg 联系起来
CubeMX生成的代码有“/* USER CODE BEGIN WHILE / ” “ / USER CODE END WHILE */”在BEGIN,END之间加入的代码不会在重新配置时被覆盖掉
代码如下:
uint8_t flg=0;
static void KEY_Task(void);
static void BEEP_Task(void);
void KEY_Task(void)
{
static uint32_t count=0;
static uint8_t step=0;
switch(step)
{
case 0:
{
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_RESET)
{
count++;
if(count>=10000)
{
count=0;
step=1;
}
}
else
{
count=0;
}
}
break;
case 1:
{
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_SET)
{
flg=1;
step=0;
}
}
break;
}
}
void BEEP_Task(void)
{
static uint32_t count=0;
static uint8_t step=0;
if(flg)
{
switch(step)
{
case 0:
{
最后
基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。