请教:pic24hj的晶振配置与串口通信中的问题;<br /><br />本人用以下程序 进行pc和24hj256gp210的芯片进行通信,<br />24h要求对晶振进行设置.<br />发送与接受的数据个数一致,但是不正确.<br />本人觉的可能是波特率的问题,但是不清楚具体问题在哪里.<br />不知道晶振设置的问题还是串口的问题.<br />24第一次用 ,流程不是很 清楚。<br />有哪为兄台能指教几招。非常感激。<br /><br />过程如下:<br /> 晶振:7.3728m,想要得到9600的波特率.<br />进行ppl,分频,倍频,<br /> N1=2,N2=2,M=40;<br /><br />得到器件工作频率FCY=(7.3728*M)/(N1*N2)/2=5*7.3728m.<br /><br />BRGX=FCY/(16*9600)-1=239.<br /><br /><br /><br />程序如下:<br />#include "p24hxxxx.h"<br /><br /><br />#define UART_RX_INT_EN 0xFFFF /*Receive interrupt enabled*/<br />#define UART_RX_INT_PR6 0xFFFE /*Priority RX interrupt 6*/<br />#define UART_TX_INT_DIS 0xFF7F /*transmit interrupt disabled*/<br />#define UART_TX_INT_PR2 0xFFAF /*Priority TX interrupt 2*/<br /><br />void ConfigIntUART1(unsigned int config)<br />{<br /> <br /> IFS0bits.U1RXIF = 0;/* clear IF flags */<br /> IFS0bits.U1TXIF = 0;<br /><br /> <br />IPC2bits.U1RXIP = 0x0007 & config;/* set priority */<br /><br /><br /> <br /> IEC0bits.U1RXIE = (0x0008 & config) >> 3;/* enable/disable interrupt */<br /> IEC0bits.U1TXIE = (0x0080 & config) >> 7;<br />}<br /><br />void WriteUART1(unsigned int data)<br />{<br /> PORTGbits.RG3=1;<br /> {<br /> while(U1STAbits.UTXBF); /* wait if the buffer is full */<br /> U1TXREG = data; /* transfer data byte to TX reg */<br /> } <br />}<br /><br />void main(void)<br />{<br />OSCCON=0x30AB;<br />CLKDIV=0x0300;<br />PLLFBD=0x0026;<br /><br />InitUrat();<br />while(1)<br />{<br />WriteUART1(0xFA);<br />asm("nop");<br />WriteUART1(0x03);<br />asm("nop");<br />};<br /><br />}<br /><br /><br />void CloseUART1(void)<br />{ <br /> U1MODEbits.UARTEN = 0;<br /> <br /> IEC0bits.U1RXIE = 0;<br /> IEC0bits.U1TXIE = 0;<br /> <br /> IFS0bits.U1RXIF = 0;<br /> IFS0bits.U1TXIF = 0;<br />}<br /><br />void InitUrat(void)<br />{<br /><br /> <br /> CloseUART1();/* Turn off UART1module */<br /> <br /> ConfigIntUART1(UART_RX_INT_EN & UART_RX_INT_PR6 &<br /> UART_TX_INT_DIS & UART_TX_INT_PR2);/* Configure uart1 receive and transmit interrupt */<br />U1BRG=239;<br />U1MODE=0x8080;<br />U1STA=0xE75F;<br />} |
|