stm32工程和算法分享(10)--74HC595驱动数码管之静态显示,可视化前端开发

96 阅读4分钟

最后

小编综合了阿里的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析

虽只说了一个公司的面试,但我们可以知道大厂关注的东西并举一反三,通过一个知识点延伸到另一个知识点,这是我们要掌握的学习方法,小伙伴们在这篇有学到的请评论点赞转发告诉小编哦,谢谢大家的支持! 开源分享:docs.qq.com/doc/DSmRnRG…

请添加图片描述

请添加图片描述

请添加图片描述

CubeMX新建工程,选择芯片,配置时钟树,外部晶振以及调试接口。具体设置可参考使用cubemx配置stm32(二)__核心配置

然后按照下表配置A0 - A3 ,芯片74HC595的 DS RCK (STCP)SCK(SHCP),

在这里插入图片描述

配置完成后生成代码

2.在main.c中添加代码,完成工程的编写


定义全局变量,和函数,在main函数的while中循环调用,时间控制函数和数码管函数通过一个全局变量 index联系起来

CubeMX生成的代码有“/* USER CODE BEGIN WHILE / ” “ / USER CODE END WHILE */”在BEGIN,END之间加入的代码不会在重新配置时被覆盖掉

在这里插入图片描述

找到 USER CODE BEGIN 0 ,在后面写上三个函数的具体定义

在这里插入图片描述

代码如下:

uint8_t index=0;

const uint8_t numTab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0-9阴码

static void SMG_Task(void);

static void HC595_WriteData(uint8_t data);

static void TIMER_Task(void);

void SMG_Task(void)

{

static uint32_t count=0;

static uint8_t step=0;

switch(step)

{

case 0:

{

HAL_GPIO_WritePin(A1_GPIO_Port,A1_Pin,GPIO_PIN_SET);//打开位选A1

HC595_WriteData(numTab[index]);//写入段选数据

step=1;

}

break;

case 1:

{

count++;

if(count>=10000)

{

count=0;

step=0;

}

}

break;

}

}

void HC595_WriteData(uint8_t data)

{

HAL_GPIO_WritePin(RCK_GPIO_Port,RCK_Pin,GPIO_PIN_RESET);

for(uint8_t i=0;i<8;i++)

{

HAL_GPIO_WritePin(SCK_GPIO_Port,SCK_Pin,GPIO_PIN_RESET);

if(data&0x80) //1000 0000 取最高位的值

{

HAL_GPIO_WritePin(DS_GPIO_Port,DS_Pin,GPIO_PIN_SET);

}

else

{

HAL_GPIO_WritePin(DS_GPIO_Port,DS_Pin,GPIO_PIN_RESET);

}

HAL_GPIO_WritePin(SCK_GPIO_Port,SCK_Pin,GPIO_PIN_SET);

data=data<<1;

}

HAL_GPIO_WritePin(RCK_GPIO_Port,RCK_Pin,GPIO_PIN_SET);

}

总结一下

面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。

还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

前端面试题汇总

JavaScript

性能

linux

前端资料汇总

前端工程师岗位缺口一直很大,符合岗位要求的人越来越少,所以学习前端的小伙伴要注意了,一定要把技能学到扎实,做有含金量的项目,这样在找工作的时候无论遇到什么情况,问题都不会大。