

本篇给大家分享“盲抛系列”MM32F103空气质量检测仪和一些关于丰田chr翻车的话题,希望大家都能喜欢。
由于这仍然是我的风格,所以我将从长话开始。
没什么可做的,太难了,我只想玩弄手里的灰板。
去年在一次智能活动上我收到了型号为eMiniBoardMB-023的开发板,它采用MM32L073作为主控。我当时写了一个开箱和串口测试供审阅。现在我又拿起它并尝试了一些小应用程序。由于我们拥有的传感器有限,我们只能制造主要包括三大功能空气温度检测、空气湿度检测、PM25浓度检测。
然而,在调试温湿度检测时,却出现了题。使用的传感器是DHT11模块。该模块需要微秒级延迟,但我在MM32L073库中找不到us延迟函数。当然,不包括空的For。SysTick的粗延迟函数只能实现ms级的延迟。我写了一个us延迟函数,发现根本不起作用。详细信息如下
复制
voidDelay_init/配置SysTick处理程序优先级/NVIC_SetPrioritySysTick_IRQn,0x0;//设置SysTick中断优先级上面是库中延迟函数的初始化,它将SysTick_Config函数中给定的系统时钟除以1000,使SysTick进入打断。在1毫秒内,将SystemCoreClock除以1000000将导致1us处的中断,这将导致延迟功能停止。经过调试,发现程序卡在SysTick_Config函数中,继续跟踪。
复制
__STATIC_INLINEuint32_tSysTick_Configuint32_t勾选
程序卡在SysTick->LOAD=Ticks-1处。也就是说,SysTick的重载值寄存器在写入47时卡住了。我忘记是哪个帖子了,但是我看到有人说这个值不能小于255。否则就是255。它是自动创建的。请输入。我测试了一下,确实如此。我不会在这里详细介绍,而是使用计时器。ps这个题在STM32F030和GD32E230中不会出现,不知道为什么。如果有人知道,请给我一些提示。
经过测试,定时器的中断无法达到1us的中断,而且无论我怎么设置,定时器最短的时间也只能在3us左右中断一次。该计划被废弃。
由于行程已经进行了一半,所以不能半途而废,就从商店买了MM32F103CBT6最小系统,价格70多元。涨价绝对是离谱!
经过一番冗长的解释,我终于能进入正文了。
本文档共有3个模块。
OLED模块采用模拟IIC驱动。DHT11温湿度模块,IO口读写操作。夏普GP2Y10灰尘传感器,UART工作。
OLED驱动器
OLED模块有两块7针096英寸屏幕,但测试时不太好用,反正也不亮,所以我在购买最小的系统板时,也购买了一块4针OLED096屏幕。今天测试了,屏幕还是不出来,试了几种方法,拿了一块stm32板子,用例程测试了一下,还是不行,最后发现是杜邦线断了.内部不可见,从外部也看不到。我实在是无语了。
关于这个屏幕的介绍我就不做过多介绍了。它在互联网上随处可见。我将在这里分享我的驱动程序。全红
复制
34;oledhinclude34;34;oledfonthinclude34;//OLED显存//存储格式如下//[0]0123127//[1]0123127//[2]0123127//[3]0123127//[4]0123127//[5]0123127//[6]0123127//[7]0123127///IIC开始////IIC开始/voidIIC_Start///IIC停止/voidIIC_StopvoidIIC_Wait_Ack/OLED_SCLK_Set;OLED_SCLK_Clr;///IIC写入字节/voidWrite_IIC_ByteunsignedcharIIC_ByteelseOLED_SDIN_Clr;da=dalt;lt;一;OLED_SCLK_设置;OLED_SCLK_Clr;///IIC写入命令/voidWrite_IIC_CommandunsignedcharIIC_Command///写入IIC数据/voidWrite_IIC_DataunsignedcharIIC_DatavoidOLED_WR_Byteunsigneddat,unsignedcmdelse///fill_Picture/voidfill_pictureunsignedcharfill_Data/Delay/voidDelay_50msunsignedintDel_50msvoidDelay_1msunsignedintDel_1ms//设置坐标voidOLED_Set_Posunsignedcharx,unsignedchary//打开OLED显示voidOLED_Display_Onvoid//关闭OLED显示voidOLED_Display_Offvoid//清屏功能,清屏后整个屏幕都是黑的!就好像灯没亮一样!voidOLED_Clearvoid//更新显示voidOLED_Onvoid//更新显示//在指定位置显示字符,包括部分字符//x:0~127//y:0~63//mode:0,显示反白;1、正常显示//size:字体选择16/12voidOLED_ShowCharu8x,u8y,u8chr,u8Char_SizeifChar_Size==16else//m^nfunctionu32oled_powu8m,u8n//显示2个数字//x,y:起点坐标//len:位数字//size:字体大小//mode:模式0,填充模式;1、叠加模式//num:取值0~4294967295;voidOLED_ShowNumu8x,u8y,u32num,u8len,u8size2elseenshow=1;OLED_ShowCharx+size2/2t,y,temp+39;size2;//显示字符串voidOLED_ShowStringu8x,u8y,u8chr,u8Char_Sizej++;//汉字显示voidOLED_ShowCHinesu8x,u8y,u8noOLED_Set_Posx,y+1;fort=0;tlt;16;t++/函数说明显示BMP图片12864起始点坐标x,y,x范围0到127,y为页面范围0到7/voidOLED_DrawBMPunsignedcharx0,unsignedchary0,unsignedcharx1,unsignedchary1,unsignedcharBMP[]//SSD1306初始化voidOLED_Initvoidoledh
复制
__OLED_H34;系统包括34;大小定义8defineOLED_CMD0//写入命令endif
这里需要解释的就是Write_IIC_Byte0x78。写入IIC地址。更改地址时,默认值为0x78。该地址可以通过屏幕背面的电阻器进行修改。
DHT11温湿度模块DHT11模块采用单总线通讯,一根数据线即可完成数据交互,MCU发出数据请求后,等待模块返回数据,一次通讯时间约为4ms。速度慢,所以只适合一般参考场景。总数据为40位,数据格式如下
数据格式8bit湿度整数数据+8bit湿度小数数据
+8位温度整数数据+8位温度小数数据+8位校验和数据如果数据传输正确,则校验和数据等于“8位湿度整数数据”。+丰田越野车有哪些类型?1丰田霸道
普拉多SUV是丰田兰德酷路泽普拉多系列的最新车型。这款新开发的SUV搭载了新开发的丰田6缸电喷1GR-FEV6发动机,排量3956cc,动力性能出色,并配备符合欧洲新标准的排气系统。普拉多越野车先进的发动机提供强大的动力和扭矩,再加上极其坚固的车架和改进的悬架系统,越野性能和通过能力都比较客观。
2陆地巡洋舰
陆地巡洋舰是丰田生产的陆地巡洋舰200。这是丰田生产的进口ORV越野车。它是一款四轮驱动、2850mm轴距、四轮盘式制动器的硬派越野车。陆地巡洋舰200陆地巡洋舰在现有47L车型的基础上增加了40L车型。
3丰田RAV4
丰田RAV4是丰田迷你多功能越野车系列的基础车型。该名称源自“四轮驱动理性主动车辆”的缩写。意为“四轮驱动休闲跑车”。RAV4于1994年在日本推出。2013年8月26日,丰田新款RAV4在中国上市。
4汉兰达
汉兰达是丰田公司生产的一款汽车,是丰田家族中的一款大型SUV。它拥有宽大的车身和充足的内部空间。2007年7月2日,丰田汉兰达作为进口车在中国正式上市。2009年4月12日,广汽丰田汉兰达正式上市,并在2009上海车展上亮相。2012年6月9日,新款汉兰达上市。
5.FJ酷路泽
FJCruiser是丰田第八代陆地巡洋舰的变体,于2007年推出。FJ代表越野型汽车。FJ酷路泽搭载强劲的丰田双VVT-i40LV6发动机和5速自动变速箱,最大输出功率200kW,扭矩380Nm。
发表评论