蓝桥杯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库的使用和相关函数之间的调用,以及复习了数电模电单片机的相关知识,看完不要忘记点赞谢谢铁铁们,可以在评论区交流
参考阅读
发表评论