- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
modbus移植说明
Modbus向MSP430F149上的移植步骤FreeModbus 的MSP430 版本的demo 是在GCC 平台,现移植到IAR 上,版本5.3。先说几点在GCC平台移植到IAR平台要改的几处地方1.先按照如图所示在IAR中建立好工程文件以及工程目录2.在system文件夹下建立DCO.C文件配置系统时钟,由于一般使用430单片机的外部8M晶振,因此此处我们自己写的函数只要和作者的留的接口对上即可。DCO.C文件代码如下:#include ../port/port.h#include dco.h/* ----------------------- Start implementation -----------------------------*/char cTISetDCO( int delta ){ char z,result; /*------选择主系统时钟为8MHZ -------*/ BCSCTL1 = ~XT2OFF; //打开XT2高频振荡器 do { IFG1 = ~OFIFG; //清除振荡器失效标志 for (z = 0xFF; z 0; z--); //等待8MHZ晶振起振 } while ((IFG1 OFIFG)); //判断晶振失效标志是否依然存在 BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK选择高频振荡器 result = TI_DCO_NO_ERROR; return(result);}。前面说的与作者的留的接口对接,也就是返回值为char类型的TI_DCO_NO_ERROR即可。3. 官方demo 使用的MCU 为MSP430F169,我用的开发板是F149 因此要更改相应的库函数。文件port.h.更改为:/* ----------------------- Platform includes --------------------------------*/#include msp430x14x.h#if defined (__GNUC__)#include signal.h#endif#undef CHARPortserial.c 中usOldSR = _DINT( )程序,_DINT()是没有返回值的所以编译会报错,将该部分程序更改为这样文件:Portserial.c---EnterCriticalSection( void )更改为:voidEnterCriticalSection( void ){USHORT usOldSR;if( ucCriticalNesting == 0 ){#if defined (__GNUC__)usOldSR = READ_SR;_DINT( );#else// usOldSR = _DINT( );#endif// ucGIEWasEnabled = usOldSR GIE ? TRUE : FALSE;_DINT( );ucGIEWasEnabled = TRUE;}ucCriticalNesting++;}文件:Portserial.c--- ExitCriticalSection( void )更改为:voidExitCriticalSection( void ){ucCriticalNesting--;if( ucCriticalNesting == 0 ){if( ucGIEWasEnabled ){ucGIEWasEnabled = FALSE;_EINT( );}}}更改中断服务函数,原程序的中断服务函数格式不能在IAR 中使用,因此要更改为IAR格式文件:portserial.c---prvvMBSerialRXIRQHandler( void )更改为:#pragma vector = USART0RX_VECTOR__interruptvoidprvvMBSerialRXIRQHandler( void ) //__interrupt[USART0RX_VECTOR]{DEBUG_TOGGLE_RX( );pxMBFrameCBByteReceived( );}文件:portserial.c--- prvvMBSerialTXIRQHandler ( void )更改为:#pragma vector = USART0TX_VECTOR__interruptvoidprvvMBSerialTXIRQHandler( void ) // __interrupt[USART
您可能关注的文档
最近下载
- 成都市金牛区2020-2021学年下学期一年级期末考试语文试卷(部编版).pdf VIP
- 儿科“一科一品”之做有温度的护理人.pptx VIP
- 2025年广州数学中考试题及答案.doc VIP
- 中文释义 PASS图解速记高中词汇正序版.xlsx VIP
- 辅警招聘考试公安基础知识(情景分析题)模拟试卷3(题后含答案及解析).pdf VIP
- 工程质量风险分级管控清单 .pdf VIP
- 生物医学工程先进制造:第一章 绪论-2015.ppt VIP
- 培养员工归属感培养员工归属感.ppt VIP
- 古方上篇后八方.张志峰老师讲解和答疑2016.3.5.doc VIP
- JingChaDaXue《灭火救援指挥》期末试卷(A)参考答案.docx VIP
文档评论(0)