|
//----------------------------------- Инициализация приемопередатчика UART0 для MSP430F14x
__task void UART0Init(unsigned long Rate, char NumBit, char Parity, char StopBit)
{
P3SEL |= BIT4+BIT5; // P3.4 и P3.5 как TXD и RXD
P3DIR |= BIT4; // P3.4 как выход для TXD
U0CTL = SWRST; // Установим бит программного сброса и очистим остальные
if (NumBit == 8) U0CTL |= CHAR; // установка 7 или 8 битного режима
if (Parity != 'n') // проверка и установка режима четности
{ U0CTL |= PENA;
if (Parity == 'e') U0CTL |= PEV; // четность
}
if (StopBit != 1) U0CTL |= SPB; // установка количества стоповых битов
U0TCTL = SSEL0 + SSEL1; // U0CLK = SMCLK
U0BR1 = (Freq.SMClk / Rate) >> 8; // установка старшего байта предделителя BITCLK
U0BR0 = (Freq.SMClk / Rate) % 256; // установка младшего предделителя BITCLK
U0MCTL = 00; // установка регистра модуляции
U0CTL &=~ SWRST; // очистим бит программного сброса
U0RCTL = URXEIE; // прерывание для неверно принятых символов разрешено
ME1 |= UTXE0 + URXE0; // разрешаем работу модуля передатчика и приемника UART0
IE1 |= URXIE0 + UTXIE0; // разрешаем прерывания от передатчика и приемника UART0
}
Частота Freq.SMClk у меня глобальная переменная и поэтому в параметрах процедуры не передается.
E-mail: info@telesys.ru