首先说明一下,本例程是在极海官方407例程的例程的基础上修改的,程序也适用于APM32F407
第一步,设置时钟 刚开始忘记修改了,没想到程序也可以烧录,那就超频168M使用吧,后面测试也没有遇到问题,相当稳定。
第二步,设置串口2为调试串口,发送调试信息,PD5,PD6,测试没有问题
接下来就是移植modbus从机部分 使用串口3 PC10,PC11 定时器14
找到APM32中与STM32中相对于的函数,直接替换就可以了,没有什么难度
下面是串口3函数 中断使能、失能函数USART_EnableInterrupt USART_EDisableInterrupt
考虑到485芯片的发送,添加485_EN脚,将发送中断USART_INT_TXBE 换成 USART_INT_TXC
串口3 485EN脚初始化
串口3发送函数USART_TxData(USART3, ucByte);
串口3接收函数*pucByte = USART_RxData(USART3);
串口3中断函数
定时器14初始化 打开中断
定时器14关闭中断 中断配置 需要注意的是定时器14中断名是:TMR8_TRG_COM_TMR14_IRQHandler
我刚开始是用的是TMR14_IRQHandler,程序找不到中断入口,卡死了
最后在主函数初始化modbus函数 给寄存器几个初始值 数据一样,验证成功
eMBInit(MB_RTU, 0x01, 0x00, 115200, MB_PAR_NONE); //modbus串口配置 串口三
eMBEnable(); //modbus使能
|