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

被折叠的 条评论
为什么被折叠?



