你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3789|回复: 2

【STM32F429心得\疑问】利用STM32F429实现抄表功能

[复制链接]

9

主题

34

回帖

0

蝴蝶豆

新手上路

最后登录
2020-4-30
发表于 2014-4-9 10:29:03 | 显示全部楼层 |阅读模式
目前水表、电表、热表、气表还有采用人工抄表的,技术太落后了。也有采用集中抄表的,但需要架设抄表系统,有用485总线的,有用红外线的,还有用MBUS。先集抄再上传。STM32F429有显示器可以显示抄表结果,有串口转网络接口可以远传,有串口可以与表计通信,再外扩些接口电路,实现一个远程抄表应用不错。
了解一下STM32F429 DISCOVERY
器原始资源在http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF259090?s_searchtype=partnumber
 
   LQFP144STM32F429ZIT6180 MHzCortex-M4FPU,有2 MB Flash256 KB RAM并有一片64MSDRAM。在线ST-LINK/V2仿真编程器。L3GD20为三轴陀螺仪。ILI9341 控制的2.4吋的262K颜色240 x 320点阵的QVGATFT显示屏,使用STemWin GUI,初始代码有时钟日历、视频及图片播放、CPU性能检测等。推荐的开发环境有IAR、MDK及TrueSTUDIO.。就用MDK4.70A吧。目前升级到ARM5.10,尝尝鲜。
            STSW-STM32138
            
            STM32F429 discovery firmware package   (UM1662)是固件应用程序
            
这个文件为固件文件,与以前的类似,就是开发环境下的应用程序,包括板子原始程序工程。
 
            STSW-STM32141
            
            STM32F429 discovery .Net Micro   Framework package (UM1676)是上位机的应用程序
            
这个文件是配合固件的上位机应用程序,NET环境的C#源文件。
 
            STM32CubeF4
            
            STM32Cube firmware for STM32 F4 series   (HAL drivers, USB, Ethernet, File System, ...) (UM1730)是图示化开发工具
            

这个文件是图示化开发工具,以前没有用过的。估计是硬件资源越发丰富,软件开发越发复杂,就配了些工具吧。
 采用免费的FreeRTOS来提供任务管理、时间管理、信号量、消息队列、内存管理等功能。任务管理上可为抢占内核也可为不可抢占内核,同时支持轮换调度和优先级调度算法。整个系统只有3个文件,外加上port的和处理器相关的两个文件。
就绪任务表是pxReadyTasksLists,延时任务链表是xDelayedTaskList,事件等待链表、任务删除链表。任务控制块tskTaskControlBlock中没有任务状态是因为不同状态的任务直接接入对应的链表。常用的函数主要有
创建任务的函数xTaskCreate(任务函数名称,任务名字可选,任务堆栈大小,任务参数,任务优先级,可选参数)
启动操作系统的函数vTaskStartScheduler()
创建定时器任务的函数xTimerCreateTimerTask()
启动定时器函数xTimerStart
回复

使用道具 举报

9

主题

34

回帖

0

蝴蝶豆

新手上路

最后登录
2020-4-30
 楼主| 发表于 2014-4-21 08:25:28 | 显示全部楼层

RE:【STM32F429心得\疑问】利用STM32F429实现抄表功能

设计的抄表功能需要的资源包括:
1、需要串口1收发上位机命令和数据,中断接收,查询发送。
2、需要串口2接红外收发模块与表计通信
3、需要显示器进行抄表操作显示
4、需要外部中断进行表计中断操作
回复 支持 反对

使用道具 举报

9

主题

34

回帖

0

蝴蝶豆

新手上路

最后登录
2020-4-30
 楼主| 发表于 2014-4-21 08:27:43 | 显示全部楼层

RE:【STM32F429心得\疑问】利用STM32F429实现抄表功能

1、利用串口中断接收645-2007标准的抄表命令
{
        static bit flag682,flag681,flaglen,flagdata,flagchk,flagover;
        static unsigned char a,control,len,flagstatus,ptrint;
        unsigned char tempint,i,sum;
          frame=0;
        tempint=SBUF;
       
        if(tempint==0x68)    //判断是否接收到帧头
        {
                if(!flag681)    //是
                {
                 buf[ptrint]=tempint;
                 flagstatus=1;      //特征位
                 ptrint++;
                 }
        }
        if(flag681 && (!flag682)  )//不是,判断是否接收到第2个68
        {
        buf[ptrint]=tempint;
        if((ptrint==7) && (tempint==0x68)){flagstatus=2;a=0;}
        ptrint++;       
        }
        if(flag681 && flag682 && !flaglen )  //接收第2个68后的两个字符即控制码和长度
        {
                buf[ptrint]=tempint;
                ptrint++;
                if(ptrint==10){flagstatus=3;control=buf[ptrint-2];len=buf[ptrint-1];a=0;}
        }
        if(flag681 && flag682 && flaglen && !flagdata)//接收数据区
        {
                buf[ptrint]=tempint-0x33;
                ptrint++;
                a++;
                if(a==len){flagstatus=4;a=0;}
        }
  
        if(flag681 && flag682 && flaglen && flagdata && !flagchk)//接收检验
        {
                buf[ptrint]=tempint;
                if(ptrint==len+10)
                {
                sum=0;
                for(i=0;i
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版