打印
[技术问答]

有没有用过NUC970/980裸机移植过freemodbus的,指导下怎么移植。

[复制链接]
594|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wudi540530058|  楼主 | 2024-1-9 14:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有没有用过NUC970/980裸机移植过freemodbus的,指导下怎么移植。

使用特权

评论回复
沙发
AloneKaven| | 2024-1-10 08:31 | 只看该作者
就简单的三步走就好了

使用特权

评论回复
板凳
wudi540530058|  楼主 | 2024-1-10 10:07 | 只看该作者
AloneKaven 发表于 2024-1-10 08:31
就简单的三步走就好了

ST的移植三步走都正常,就是这个新唐的移植一直有问题。
void uart2ISR(void)
{   
        UINT32 volatile uRegISR, uRegFSR, uRegMSR, uRegFUN_SEL ,uRegIER;
        UINT8 volatile uRegRBR;       
        UINT8 ch;
    uRegISR = inpw(REG_UART2_ISR) & 0x0f;//REG_UART2_ISR寄存器的值为0x103
    uRegIER = inpw(REG_UART2_IER);
       
        uRegFUN_SEL = inpw(REG_UART2_FUN_SEL);//REG_UART2_FUN_SEL寄存器初始值为0
       
        if(uRegISR & UART_ISR_THRE_INT_Msk)
        {       
                prvvUARTTxReadyISR();        // 发送中断子程序 ,通知modbus数据可以发松               
               
        }       
        else if(uRegISR & UART_ISR_RDA_INT_Msk)
        {       
                // Get all the input characters
                while ((uRegISR & UART_ISR_RDA_IF_Msk) >> UART_ISR_RDA_IF_Pos)
                {                       
                        prvvUARTRxISR();                                                                                // 接收中断子程序 ,通知modbus有数据到达
                }
        }
    uRegRBR = inpb(REG_UART2_RBR);        //清除UART接收中断的挂起标志位,确保下一次正常触发中断。读取RBR,清除中断标志位.

}

使用特权

评论回复
地板
wudi540530058|  楼主 | 2024-1-10 10:12 | 只看该作者
wudi540530058 发表于 2024-1-10 10:07
ST的移植三步走都正常,就是这个新唐的移植一直有问题。
void uart2ISR(void)
{   

进入中断后,串口相关ISR/IER是只读寄存器,接收数据都是一段,按照ST32F系列的方式没有调试通,现在直接访问寄存器,又发现像ISR[8]这位,规格书里面写“”This bit is set if RDA_IEN(UA_IER[0]) and RDA_IF(UA_ISR[0]) are both set to 1.“” ,直接读取两位,返回值是1,但是UA_ISR[8]没有置1。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝