蓝桥杯15届备战Day1

14届蓝桥杯省赛

文章目录

蓝桥杯15届备战Day1前言一、客观题二、主观题程序设计1.CUBEMAX配置2.代码部分(完成大部分任务,少部分没有仪器就没做)

总结

前言

备战蓝桥杯嵌入式,刷题第一天,对象为14届蓝桥杯省赛题 工程代码在此 网盘

提示:以下是本篇文章正文内容,下面案例可供参考

一、客观题

1.什么是时序逻辑电路 数电 2.减法器计算当前状态 数电 例如:一个 8位二进制减法计数器, 初始状态为 00000000, 问经过 268个输入脉冲后, 此计数器的状态为 ______。 8位二进制数计数2^8 = 256次后回到00000000,__还剩268-256=12次计数,计数1次后从“00000000”减为“11111111”,__此后再减11(00001011),得到11110100 3.晶体管的Iceo能够体现出什么 链接在此 模电 4.STM32 系列微控制器,程序可以在哪些区域上运行 答案是rom和ram都可以 5.DAC的相关计算

   

~~~

   比如一个8位分辨率的DAC电路,其最大数字值为255(2的8次方减1),参考电压为5伏特,二进制输入值为10101010,则输出电压计算如下: 输出电压 = (170 ÷ 255) × 5V = 3.33V

    

~~~~

    补充说明:ADC的最低有效位LSB zhihu 6.门电路中,输出端可以直接相连实现线与的是 7.中断优先级及是否支持设置 8. 工作在线性区域的运算放大器应处于什么状态 闭环 即有反馈 9. 同步电路和异步电路的区别是 知乎 10.内联函数 关键字 inline 知乎

二、主观题程序设计

1.CUBEMAX配置

时钟配置 选择外部高速时钟 80M就行了官方用的80M

按键配置 定时器配置 10ms PA1 配置PWM输出 f = Clock/(psc + 1)/(counter + 1) 输入捕获 测周法使用 原理放在这里了 另一个博主 然后是adc 勾上就能用其他不用改

2.代码部分(完成大部分任务,少部分没有仪器就没做)

按键的代码如下:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

{

static uint16_t count_data;

if(htim->Instance == TIM17)

{

if(if_start_tim)count_data++;

if(count_data >= 500)

{

count_data = 0;

if_start_tim = 0;

}

Get_adc();

//获取按键此时状态

keys[0].Key_sta = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0);

keys[1].Key_sta = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1);

keys[2].Key_sta = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2);

keys[3].Key_sta = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);

}

for(unsigned char i = 0; i < 4; i++)

{

switch(keys[i].Judge_sta)

{

case 0:

{

if(keys[i].Key_sta == 0)//如果等于0 开始消抖

{

keys[i].key_precess_time = 0;

keys[i].Judge_sta = 1;

}

}break;

case 1:

{

if(keys[i].Key_sta == 0)//如果此时仍等于0 按键按下

{

keys[i].Judge_sta = 2;//等待按键弹起

}

else

keys[i].Judge_sta = 0; //如果此时等于1 按键未按下 重新定义状态

}break;

case 2:

{

if(keys[i].Key_sta == 1)//如果此时弹起的话 已松手

{

keys[i].Judge_sta = 0;//状态闲置态

if(keys[i].key_precess_time<70)

{

keys[i].Key_Short = 1;

}

}

else

{

keys[i].key_precess_time++; //10ms 2s 2000ms

if(keys[i].key_precess_time>200)

{

keys[i].Key_Long = 1;

}

}

}break;

}

}

}

注意一定要在while前初始化这些外设

/* USER CODE BEGIN 2 */

HAL_TIM_Base_Start_IT(&htim17);//开启中断

HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);//pwm使能

HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_2);//direct 的通道

LCD_Init();

/* USER CODE END 2 */

总结

以上就是今天要讲的内容,掌握了hal库的使用和相关函数之间的调用,以及复习了数电模电单片机的相关知识,看完不要忘记点赞谢谢铁铁们,可以在评论区交流

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: