版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一篇硬件资源介 第二篇开发工具与工程架构解 第三篇例程使用详 第一章LED跑马 第二章蜂鸣器使 第三章按键使 第四章TFTLCD显 第五章串口1-RS232实 第六章定时器中 第七 输 第八章模数转换 第九章数模转换 第十章串口2- 第十一章 第十二章 第十三章CAN1与CAN2通 第十四章RTC实时时 第十五章汉字显 第十六章RTC农历显 第十七章温度传感器 第十八章红外传感器 第十九章触摸屏使 第二十章232_485_can数据转换通 第二十一章USBU盘 第二十三章TCP服务器数据收发实 第二十四章TCP客户端数据收发实 第二十五章UDP服务器数据收发实 第二十六章UDP客户端数据收发实 第二十七章串口1-232与TCP服务器双向通 第一篇硬件资源介绍1.2这边注意下 座供电用6V供电也行,但是为了供电稳定议用6V以上的。MINIUSB接口接于STM32高速usbIO口,用于供电和进行USB通信,不能用于程序。由于没有加高速,所以USB也只能运行于全速模式。第二篇KEIL5(MDK5)包含工控STM32F407(高配版)资料\常用软件\MDK5中有安装文件和安装STM32F407开发板(高配版)可以使用串口线或者仿真器程序,具体怎么程序,工控板STM32F407(高配版)资料\F407开发板(高配版)程 第三篇此篇会结合开发板原理图和程序源码,讲解怎么使用各个例第一章LED跑马int代码是通过位带操IO口intdelaydelayinit();//初始化延时函数 //初始化LED端//LED0//LED0//LED1 //LED2 //LED0 //LED0 //LED1//LED2 //LED0 //LED1 //LED2}}3.1.3开发板下入该LDE程序,LEDLED0LED2依次亮灭流水灯效果
第二章蜂鸣器使用程序下进去后,蜂鸣器会一响一闭的
第三 按键使voidvoidkey_scan(u8 elseif(KEY1==0)keytem=2;elseif(KEY2==0)keyelseif(KEY1==0)keytem=2;elseif(KEY2==0)keytem=3;elseif(KEY3==0){ //键抬起后按键值 if(key_tem==key_bak) else配合第二次扫描有效,这样实现了去抖动////有键按下后执行一次扫描 if((mode==0)&&(key_time>1))//key_time>1按键值无效,这就是单按mode为1就为连按 // //去{{}}{{}}}KEY0,ledKEY1,KEY2led0,长按KEY32led1和led2第四 TFTLCD显3.4.2代码解//使NOR/SRAM的Bank1.sector4//A12作为数据命//注意设置时STM32内部会右移一位对 #define ((u32)(0x6C000000|#define#define ((u32)(0x6C000000| #defineLCD_CMD (*(u16*)CMD_BASE)#define (*(u16*)由于用FSMCA12作为数据命令选择线,所以数据与命令的地址线3.4.3程序下进去之KEY0,依次进行各颜色清屏显示,按KEY1,种情
第五 串口1-RS232实3.5.1使用DB9针232串口时,需要将P14的短路帽接起来{else{else 用的串口1,所以需要对串口1进行初始化和编写需要的中断函数3.5.2代码解串口发送}}while(k<douart1SendChar(*(strk));k++; u16k=0{voiduart1SendChars(u8*str,u16{oid串口接收中断,里面定义接收命令的格{oid if(USART_GetITStatus(USART1USART_IT_RXNE)RESET)//接收中断{ {}} elseif(strcmp("Close_led1",(char*)receive_str)==0)LED1=1;elseif(strcmp("Open_beep",(char*)receive_str)==0)BEEP=1;elseif(strcmp("Close_beep",(char*)receive_str)==0)BEEP=0;//蜂鸣器不响}else{}}}程序下进去之后,接上232串口线,电脑端打开串口助手,发送1、串口助手接收开发板串口1发来的KEY0开发板会发送UART1TEST串口助2、串口助手发送控制命令给开发发送命令格式为:S……E 第六 3.6.1STM32内部集成定时器功3.6.2代码解voidTIM2_Init(u16auto_data,u16{ Ft定时器时钟以计数5000次为500ms第七 输出3.7.1利用STM32内部集成的定时器实现输出3.7.2代码解TIM5TIM_OCInitStructure.TIM_OCMode=1;//选择定时器模式脉冲宽度调制模式TIM_OCInitStructure.TIM_OutputStateTIM_OutputState_Enable;//比较TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;性:TIM输出比较极性低TIM_OC1Init(TIM5,&TIM_OCInitStructure);//根据TTIM14OC1TIM_OC1PreloadConfig(TIM5,TIM_OCPreload_Enable);TIM5上的预装载寄存器Ft //84M/84=1Mhz的计数频率,重装载值500,所频率为 占空比 程序下进去之后KEY0比减少10%KEY1比10%
第八 模数转换3.8.1STM32内部集成ADC3.8.2代码解u16Get_Adc(u8 {ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_480Cycles //ADC1,ADC通道,480个周期,提高采样时间可以提高精确 ADC_SoftwareStartConv(ADC1);//使能指定的 的软件转换启动功 while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//等待转换结束returnADC_GetConversionValue(ADC1);//返回最近一次ADC1该函数返回测的通道的模拟3.8.3程序下进去之后,PA0接入所测量的模拟电压,屏幕会显示接入的模第九 数模转换3.9.1STM32内部集成DAC3.9.2代码解//doubletemp=temp*4096/3.3;temp=temp*4096/3.3;//12位的故为*返回*参数:vol:0~3300,代表* 能:设置通道*返回*参数:vol:0~3300,代表* 能:设置通道1输出电* 称:*************voidDac1_Set_Vol(u16{3.9.3该例程为PA4作为DAC输出电压,PA6作为ADC模拟电压输入,实验时需要用一根杜邦线连接PA4与PA6,此时DA(PA)输出的电压值输入到PA6,屏幕也会实时显示输出的电压值的数字值、模拟值大小和测得的ADC输入电压的模拟值。按KY0CY1DAC输出电压减少。
第十 串口2-由于485接于串口2并且中间用跳针隔开,所以在使用串口2 //循环发 //循环发RvoidRS485_Send_Data(u8*buf,u8{u8 //设置为 //发送数发发送结}//发送完设置为接//等}RS485_TX_EN一般设置为“0于接收状态,当什么时候需要发送的才设置为发送,发送完又设置成接收,使485一直处于接收状voidRS485_Receive_Data(u8*buf,u8voidRS485_Receive_Data(u8*buf,u8{u8u8接收结{//接收到了数据,且接delay_ms(10);10ms,10ms //默认为}}//清//记录本次数据}{}接收中断触发后,在中断服务函数中,就会把接收的数值存RS485_receive_str[P4485AB接口,请将外485设备,按AA,BB的形式接起来。程序下进去就可以跟板子进行485通信。发什么控制命令格式跟第五章一样,请参考第五章的10-2串口3-TTL实验跟第五章的使用操第十一 ICCPB8与PB9为原生的硬件IICSTM32原生的IIC不稳定,所以本例程程序使用普通IO口进行模拟IIC通信协议。#defineSDA_IN() //PB9输入模式#defineSDA_OUT(){GPIOB->MODER&=~(3<<18);GPIOB->MODER|=1<<18;}//PB9输出模式AT24C02读函数 称:voidAT24C02_Read(u8ReadAddr,u8*pBuffer,u8参数:ReadAddrpBuffer:数据数组首地址参数:ReadAddrpBuffer:数据数组首地址返回参数voidAT24C02_Read(u8ReadAddr,u8*pBuffer,u8ReadNum){while(ReadNum--while(ReadNum--}名功void名功voidAT24C02_Write(u8WriteAddr,u8*pBuffer,u8里面的指定地址开始写入指定个数的pBuffer参数:WriteAddr**voidAT24C02_Write(u8WriteAddr,u8*pBuffer,u8WriteNum){{while(WriteNum--WriteNum:要写入数据的}}}该例程需要配合串口1通信来完成1、接收串口1发来的数据程序开始运行后,屏幕会显示请用户发送数据到串口Pleasesenddatatousart1,此时用户就要通过串口助手向开发板发送数据,据,发送后数据存在receive_str[]数值中并在显示屏显示。2、将接收到的数据写入KEY0按下,将串口1接收到的数据 ]中数据)写入3、将写入到24C02KEY1按下,将写入到24C02中的数据读出第十二 W25Q128接于STM32原生硬件SPI1//读写函该例程需要配合串口1通信来完成1、接收串口1发来的数据程序开始运行后,屏幕会显示请用户发送数据到串口Pleasesenddatatousart1,此时用户就要通过串口助手向开发板发送数的数据,发送后数据存在receive_str[]数值中并在显示屏显示。2、将接收到的数据写入KEY0按下,将串口1接收到的数据 ]中数据)写入3、将写入到W25Q128KEY1按下,将写入到W25Q128中的数据读出并显第十三 CAN1与CAN2通使用CAN1和CAN2时,记得短路帽都接于CAN//CAN模式选u8CAN1_mode=1;//CAN工作模式;0,普通模式;1,环回模u8CAN2_mode=1;//CAN工作模式;0,普通模式;1,环回模CAN1ModeInit(CANSJW1tq,CANBS26tq,CANdeNormalCAN初始化回环模式,波特CAN2ModeInit(CANSJW1tq,CANBS26tq,CANde_Normal);//CAN初始化回环模式,波特率3.13.3确保短路帽都接到两个CAN端。如下图1、CAN模式设CAN的工作模式有回环模式和回环模式只要一个can自己就能工作,自普通模式,需要两个CAN。这时需要连接两个CAN的H和L2、发送与接收数据:CAN1的发送由KEY0控制,CAN2的发送由KEY3控制回环模式下,按下KEY0,CAN1发送数据,将在CAN1的介绍区域显示,CAN2也是如此,只是CAN2发送按下的是KEY3;普通模式下,连接好两个can的接口H与L,按下KEY0,CAN1发送数据,CAN2的介绍区域显示,证明CAN1发送数据,CAN2已经接收到,实现两个can的通信。CAN2同理操作。第十四 RTC实时时STM32F4时时(RTC)相对STM32F1来说,改进了不少,带了日历功能了,STM32F4RTC,是一个独BCD定时器/计数器。RTC提供一个日历时钟(包含年月日时分秒信息、两个可编程闹钟(ALARMAALARMB)中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC还包含用于管理低功耗模式的自动唤醒单元F407的RTC就是一个时,代码操作也是操作对应的寄器,比如年月日时分秒寄存器。所以代码看起来简单。请用户看下程代码3.14.3程序进去后,RTC时钟初始化后开始跑动,并在液晶屏上每1、长按KEY3秒进入调整2、按KEY2右移选择你要调整的时间选项(年月日时分3、按KEY0数值加1,按KEY1数值减4、调整完时间,短按KEY3设置时第十五 汉字显3.15.1硬件使用到SD卡和FLASHW25Q128将SD卡中存放的字库,更新到W25Q128中,然后液晶屏显示汉字从W25Q128取字库。由于使用到SD卡,所以用文件系统操作比较方便。使用到文件系统/*************HanZiUse.lib调用更新字库要用到的************/ //初始化内部内存池fsTF=(FATFS*)Mem_malloc(INSRAM,sizeof(FATFS));//为文件系统分配 //TF程序下进去后,检测W25Q128里面有没有字库,如没有字库,更新字库。按KEY0可以更新字库(从SD卡取字库更新到W25Q128),按KEY1进行汉字显示测试。第十六 RTC农历显该例程为RTC和汉字显示结只要输入公历的日期就可以得到农历日期的字符*函数名称:voidGetLunarCalendarStr(u16year,u8month,u8day,u8 参数: 接收农历日期字符* 参数: 接收农历日期字符*公历*公历**输出参数:* 明 返回*str="乙未年正月廿五voidGetLunarCalendarStr(u16year,u8month,u8day,u8*str){ *)"甲子年正月初一 if(GetChinaCalendar(year,month,day,(u8 StrCopyss(&str[0],(u8 StrCopyss(&str[2],(u8 ) StrCopyss(&str[6],(u8*)monthcode[NLyear[2]- StrCopyss(&str[10],(u8 StrCopyss(&str[10],(u8*)"初 StrCopyss(&str[12],(u8*)monthcode[(NLyear[3]-}程序下进去后,检测W25Q128里面有没有字库,如没有字库,更新字库。接着就显示时间和公历农历的日期,还有节气。如需调整时间,请参照第十四章的RTC实验,操作与其一模一样。第十七 温度传感器获取温度{ //ds1820start DS18B20_Write_Byte(0xcc);//skip DS18B20_Write_Byte(0xbe);// TL=DS18B20_Read_Byte();// TH=DS18B20_Read_Byte();// temp=0;//温度 }elsetemp=1;//温度为 tem=TH;//获得高 tem+=TL;//获得底 tem=(double)tem*0.625;//转 此时的转换已经把温度扩大10 if(temp)returntem;//返回温 }程序下进去后,每200ms温度值,并且在显示屏显示。LED0闪烁显示系统正在运行。第十八 红外传感器说明:Ir_Record[4];voidIr_Decode(void)u8i,j,u8IR_OK=k=for(i0;i //4 for(j1;j if(Record> //大于某值为1,这个和晶振有绝对关系,这12M计算,此值可以有一定 Value=}{Value=;}if(j<{}}Value=}Decode_OK=1;//处理完毕标志位置}电路硬件设计红外的接口接于普通IO口,所以使用外部中断检测红外数据信号程序下进去后,按下红外,屏幕会显示相应的键值第十九 触摸按键扫描,type:0,屏幕坐标;1,物理坐标(校准等特殊场合用voidRTouch_Scan(u8 if(PEN==0)//有按键按下 物理坐 else //将结果转换为 //建抬 注意参数:XupXdownYupYdown,up为触摸按下后手抬起后返回的按键值,down为触摸按下就返回的按键值。第二十 数据转换通使用232、485和CAN相关电路数据转换函数void { }void { }void { void { }void { void }由于232485采用的是中断模式,故在中断接收函数中处理据转换当接收到数据时,原样从485或232和can1发出去,而则采用扫描方式在主函数中每隔 检测接收函数程序下进去后,当串口助手发送数据给232,232的串口1接收到数据后会从485和can原样发出去刚才从 那里接收到的数据。和can1 U盘由于USBCAN用IO口所以在使用USB时候需要将短路帽连接在USB端。就是P21USB_DM1USB_D-,USB_DP1USB_D+。U* 能:读U 参数:buf:* 能:读U 参数:buf:读数据 sector:扇区 cnt:扇区个 u8USBH_UDISK_Read(u8*buf,u32sector,u32cnt){ u8 /连接还存在,且是APP测试状 USBH_MSC_HandleBOTXfer(&USB_OTG_Core res=1;//读写错 }else }U* 能:写U 参数:buf:* 能:写U 参数:buf:写数据 sector:扇区 cnt:扇区 u8USBH_UDISK_Write(u8*buf,u32sector,u32cnt){ u8 /连接还存在,且是APP测试状 USBH_MSC_HandleBOTXfer(&USB_OTG_Core res=1;//读写错 }else }程序下进去后,屏幕会显示U盘的总容量 TCP服务器数据收发实由于网WIFI接口3.23.2代码解请仔细看程序代双排针P5的6个短路帽记得都接上去,程序下进去后,屏幕会显示开发板作为服务器的IP和端,此时:1、设置电脑本地IP地址由于是开发板作为服务器,电脑网络助手做客户端,所以客户端的设置的IP地址跟开发板作为服务器所的程序代码没联系,这边电脑本地IP地址后面的68,用户可自行设置。这边设置68是要跟后续的例程统一。注意:如果使用的是笔记本电脑,使用该例程要禁用无线网络2、打开网络助手设置由于是开发板选择客户端,服务器IP设置跟开发板程序代码一致。程序代码IP为:192.168.1.240端2040。3、实验现前面都设置好后,网络助手点击连接,网络助手就连接上开发板的服务器。之后点击发送。此时就是客户端向服务器发送数据,服务器接到数据后,将接收到的数据原封不动的发回给客户端。 TCP客户端数据收发实同第二十三3.24.2代码解请仔细看程序代双排针P5的6个短路帽记得都接上去,程序下进去后,屏幕会显示开发板作为客户端的IP和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版带物业增值服务物业房产买卖合同书3篇
- 二零二五版新能源研发及生产厂房买卖合同范本3篇
- 二零二五年度厨具行业人才培养与输送合同4篇
- 二零二五年度赎楼金融产品合作合同4篇
- 二零二五年度出轨婚姻解除后的子女抚养权及财产分割协议4篇
- 2025年度宗教活动场地租赁合同范本3篇
- 二零二五年度彩钢屋面防水隔热一体化工程承包协议3篇
- 2025年人力资源经理员工关系与劳动争议处理协议3篇
- 二零二五年度床垫售后服务质量保证合同3篇
- 2025年建筑工程劳务市场调研与行业分析合同3篇
- GB/T 45120-2024道路车辆48 V供电电压电气要求及试验
- 春节文化常识单选题100道及答案
- 12123交管学法减分考试题及答案
- 2025年寒假实践特色作业设计模板
- 24年追觅在线测评28题及答案
- 初中物理八年级下册《动能和势能》教学课件
- 高考满分作文常见结构
- 心肌梗死诊疗指南
- 食堂项目组织架构图
- 原油脱硫技术
- GB/T 2518-2019连续热镀锌和锌合金镀层钢板及钢带
评论
0/150
提交评论