amobbs.com 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
回复: 1

stm8s stm8s.h stm8s_conf.h头文件的使用以及modbus的使用

[复制链接]
(3568694)

打赏出0元收入0元

发表于 2020-5-28 11:01:40 | 显示全部楼层 |阅读模式

在使用IAR for stm8编程的时候,会使用到stm8s.h的头文件。

官网下载的库函数直接用需要在main.c最后加上这么一段代码,才可以编译通过

#ifdef USE_FULL_ASSERT
void assert_failed(u8 *文件,u32行)
{
  while(1)
  {
  }
}
#endif


stm8.h头文件中最开始会有这么一段


/ *根据您的
   应用程序中使用的目标STM8S或STM8A器件取消注释下面的行。* /

/ * #define STM8S208 * / / *!<带CAN的STM8S高密度设备* /
/ * #define STM8S207 * / / *!<没有CAN的STM8S高密度设备* /
/ * #define STM8S007 * / / *! <STM8S超值系列高密度设备* /
/ *#定义STM8AF52Ax * / / *!<带有CAN的STM8A高密度设备* /
  #定义STM8AF62Ax * / / *!<没有CAN的高密度设备* /
/ *#定义STM8S105 * / / *!<STM8S中密度设备* /
/ *#定义STM8S005 * / / *!<STM8S值线中密度器件* /
/ * #define STM8AF626x * / / *!<STM8A中密度器件* /
/ * #define STM8S103 * / / *!<STM8S低密度器件* /
/ * #define STM8S003 * / / *!<STM8S值Line低密度器件* /
/ * #define STM8S903 * / / *!<STM8S低密度器件* /


你可以针对自己的型号将前面的/ *去除,另一种方法是不需要自己去除,options-> c / c ++编译器->预处理器中的已定义符号中加入对应的模型,如STM8AF62Ax
如若不然,会跳出错误,因为h文件中有这一段,未预定义错误报错

#if!defined(STM8S208)&&!defined( STM8S207)&&!定义(STM8S105)&& \
    !定义(STM8S103)&&!定义(STM8S903)&&!定义(STM8AF52Ax)&& \
    !定义(STM8AF62Ax)&&!定义(STM8AF626x)&&!定义(STM8S007)&& \
    !定义(STM8S003)&&!定义(STM8S005)
#错误“请先选择应用程序中使用的目标STM8S / A设备(在stm8s.h文件中)”
#endif


stm8s_conf.h文件是包含多个型号可用的外设,如

#if define(STM8S208)|| defined( STM8S207)|| 定义(STM8S007)||定义(STM8S103)|| \
    定义(STM8S003)|| 定义的(STM8S903)|| 定义(STM8AF52Ax)|| 定义(STM8AF62Ax)
#include“ stm8s_uart1.h”
#endif / * STM8S208 || STM8S207 || STM8S103 || STM8S903 || STM8AF52Ax || STM8AF62Ax * /


可见62ax有uart1但是62a6并没有uart1只有uart3没有看到哪里有具体说明小型号对应的编号可以自己尝试调试


stm8af62a6单片机rs485开发日志

用stm8af62a6 进行开发stlink v2 swim4接口连接
串口接485电平转换 485值得注意 串口输出时不要立即将485使能端置位,会导致数据传输到一半就停止,需要延迟

利用iar进行开发,例程网上很多,找stm8s即可,s和a系列很多部分是通用的,只要修改里面的一个注释即可

有一个不错的开发工具推荐,见附件,自动生成代码,很轻松

对于af62a6只有uart3口是可用串口
linuart不需要用,可以直接无视,可以直接用作uart


stm8 stm8s stm8af 485接口 modbus协议代码(已实现)

本人使用stm8af62a6,stm8s和stm8af大多数是互通的,只用一个库函数
62a6只能使用uart3!

485接口是硬件,不需要管,任何硬件接线都可以实现

代码见附件,已实现通信

主函数代码,主要为初始化函数,以及modbus帧接收处理函数,帧接收处理按自己的需求自行修改,本例的处理函数为接收数据再多输出一点数据

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(3568571)

打赏出0元收入0元

 楼主| 发表于 2020-5-28 11:03:43 | 显示全部楼层
这个modbus版本比较低,实现的只有8位的寄存器寻找功能,需要拓展,同时,modbus的超时判断建议使用空闲中断回来的快很多很多,不过这种定时器的判断也是可用的,不要求高传输速率的情况下。
回帖提示: 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-7-8 18:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表