我对单片机编程非常陌生。
我在用
用于编程
我编写了非常简单的程序来闪烁LED并在UART上发送少量字符,请参阅以下源代码:
#include <p33Exxxx.h>
#include <p33EP256MU810.h>
#include <libpic30.h>
#include <uart.h>
#include <stdlib.h>
#include <stdio.h>
#include <pps.h>
#include <xc.h>
#include <stdint.h>
// Configuration settings
_FOSC(FNOSC_FRCPLL);
_FWDT(FWDTEN_OFF);
int main()
{
//make all pins digital
PADCFG1 = 0xFFFF;
//set direction
TRISCbits.TRISC2 = 0;
//Initialze UART1
iPPSOutput(OUT_PIN_PPS_RP68, OUT_FN_PPS_U1TX);
//close UART
CloseUART1();
//open UART
OpenUART1( UART_EN & UART_IDLE_CON & UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT,
UART_TX_ENABLE & UART_INT_TX & UART_ADR_DETECT_DIS,
15);
while (1)
{
//turn on led
LATCbits.LATC2 = 1;
__delay32(3750000); // ~1 sec delay
//turn off led
LATCbits.LATC2 = 0;
__delay32(3750000); // ~1 sec delay
//Transmit data
while(BusyUART1()); //Wail till available
WriteUART1(0x55);
WriteUART1(0xaa);
while(BusyUART1()); //Wail till all bytes sent
}
return 0;
}LED闪烁部分工作得很好,但是我在UART的另一端接收垃圾字符,在那里我使用串行监视工具(X)来监视数据。
我的主要问题是我无法计算波德率。如果我做错了什么请告诉我。
谢谢
发布于 2016-03-24 16:07:29
U1BRG = value;后立即手动设置波特率。传递给UxBRG的值取决于时钟速度和所需的波特率,详细信息在USART手册页面9中。注意,如果手动设置波特率也需要设置或清除U1MODE.BRGH位。发布于 2016-04-01 14:17:00
“我的主要问题是我无法计算波德率。如果我做错了什么,请告诉我。”
我不知道什么是理想的波德率,但:
_FOSCSEL(FNOSC_FRCPLL)和启用的锁相环)。希望这能帮上忙。
https://stackoverflow.com/questions/36155667
复制相似问题