第十届蓝桥杯嵌入式赛前准备(四)

本文详细介绍了多种嵌入式硬件传感器的应用与注意事项,包括DHT11温湿度传感器的稳定性问题,DS18B20温度传感器,LIS302DL加速度传感器的配置与使用,ADC_KEY按键检测电路,以及SEG数码管驱动等。同时,探讨了TIM定时器的多种工作模式,如基本定时应用、PWM输出和输入捕获,并提供了常见问题的解决方案。

2.2、扩展板
2.2.1、DHT11?

在这里插入图片描述
不稳定?
湿度不准?

2.2.2、DS18B20

在这里插入图片描述

2.2.3、 LIS302DL?

在这里插入图片描述
只会简单应用
写地址0x38
读地址0x39
在这里插入图片描述
配置寄存器
在这里插入图片描述
自我检测
在这里插入图片描述
读取寄存器值

2.2.4、ADC_KEY

在这里插入图片描述
阻值对应adc值
在这里插入图片描述
判断按键
在这里插入图片描述

2.2.5、SEG

在这里插入图片描述
在这里插入图片描述
码值
在这里插入图片描述
在这里插入图片描述
8段共阴数码管
ser为串行数据输入口
sck为移位时钟,上升沿有效
rck为显示时钟,高电平送出数据

2.2.6、PSR_DO

在这里插入图片描述
在这里插入图片描述

2.2.7、PSR_AO

在这里插入图片描述
在这里插入图片描述

2.2.8、ADC

同adc
在这里插入图片描述

2.2.9、PLUSE

同TIM
在这里插入图片描述

2.2.10、PWM

同TIM经验

2.3、卡、死循环

卡在BEAB BKPT 0xAB汇编的解决办法
1.在程序里面不使用print之类的f函数.
2.在项目设置中 选择 target选项卡 然后选择 USE Mcrolib 这样就可以了,就是说要用printf函数时要用"Use MicroLIB"库,即: C 微库(microlib).

程序卡在B处
在这里插入图片描述
开启中断但不存在相应的中断服务函数

卡在RTC_WaitForSynchro();
在这里插入图片描述
在非第一次下载过程中,程序执行到else语句内,未对LSI时钟正常使能,故卡在RTC_WaitForSynchro()

打断点无效
将无用断点去掉

复位备份寄存器
在这里插入图片描述
备份寄存器疑似一定要在时钟前面
未添加库函数
在这里插入图片描述
开串口时无法下载
串口选择错误,应选择另外一个串口数据传输(串口号大的)。本串口用于下载数据。

2.4、疏漏

外部中断忘记消抖
忘记开启外设的IO口时钟
串口不能用
1、串口未初始化
2、串口IO没开
dht11
记得这个温湿度读取一次要等待一段时间才能顺利读取到下一次的数据(一般2s)
屏幕变色
在这里插入图片描述

2.5、疑问

外部中断抖得厉害
优先级
模电数电

2.6、学习
2.6.1、TIM的基本应用

当做真·定时器用,使能更新中断,当计数器向上或向下溢出时,
计数器初始化(通过软件或内外部触发)
在这里插入图片描述
定时时间的设置
Tout(溢出时间)=(ARR+1)(PSC+1)/Tclk
TIM3_Int_Init(4999,7199) = 500ms

2.6.2、TIM的PWM输出

TIM_Pulse设置待装入捕获比较寄存器的脉冲值
TIM_OCMode有两个模式可用
TIM_OCMode_PWM1为向上计数时,计数值小于比较值为有效电平,向下时计数值大于比较值为有效电平 “低通”
TIM_OCMode_PWM2为向上计数时,计数值大于比较值为有效电平,向下时计数值小于比较值为有效电平 “高通”
TIM_SetCompare2(TIM2, 3999);设置比较值

2.6.3、TIM的输入捕获

TIM_ICSelection = TIM_ICSelection_DirectTI; //映射到 TI1 上
TIM_ICFilter = 0x00;//IC1F=0000 配置输入滤波器 不滤波

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值