реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> lpc1768 - пмогите не работает уарт0
induke
сообщение Jan 14 2011, 06:51
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 14-09-09
Пользователь №: 52 354



есть вот такой код -тупо пока тренируюсь с переферией
таймер работает, ацп работает, уарт0 неработает

помогите плиз что не так я пишу, вроде настраиваю так же как в примере.......

CODE

#ifdef __USE_CMSIS
#include "LPC17xx.h"
#endif

// TODO: insert other include files here

// TODO: insert other definitions and declarations here

#define PCTIM0 1
#define PCLK_TIMER0 0
#define MCR0I 0
#define ISE_TIMER0 1
#define MR0INT 0
#define MR0R 1

int main(void) {

// TODO: insert code here
LPC_GPIO0->FIODIR0 = 0xFFFFFFFF;
LPC_PINCON->PINSEL1 = (1<<14)|(0<<15);

LPC_SC->PCONP= LPC_SC->PCONP| (1<<PCTIM0)|(1<<12)|(1<<3); //12= ADC 3 = UART0
LPC_SC->PCLKSEL0 = LPC_SC->PCLKSEL0 | (1<< PCLK_TIMER0); //0-1-2-3 = /4 /1 /2 /8
LPC_SC->PCLKSEL0 = LPC_SC->PCLKSEL0 |(1<<6)|(1<<7); // f UART2 = PCLK

LPC_PINCON->PINSEL0 = LPC_PINCON->PINSEL0 |(1<<4); // P0.2 = UART0
LPC_PINCON->PINSEL0 = LPC_PINCON->PINSEL0 |(1<<6); // P0.3 = UART0
LPC_PINCON->PINMODE0 |= (1<<7); // P0.1 = NO RESISTOR


LPC_TIM0->TCR = 1;
LPC_TIM0->PR = 1;
LPC_TIM0->CCR=0;
LPC_TIM0->CTCR=0;
LPC_TIM0->EMR=0;
LPC_TIM0->MCR=0;



LPC_UART0->LCR = 3; //8 BIT MODE
LPC_UART0->LCR = LPC_UART0->LCR | (1<<7); //DLAB = 1
LPC_UART0->DLL =4;
LPC_UART0->DLM =0;
LPC_UART0->FDR= (8<<4)|(5);
LPC_UART0->LCR = LPC_UART0->LCR | (0<<7); //DLAB = 0
LPC_UART0->TER = (1<<7); //trx enable
LPC_UART0->FCR = 0x07; //fifo on




LPC_ADC->ADCR = LPC_ADC->ADCR | (1<<0) | (0x7f<< 8)| (1<<16)|(1<<21);
LPC_ADC->ADINTEN = 1<<8;




LPC_TIM0->MR0=10000;
LPC_TIM0->MCR=(1<<MCR0I)|(1<<MR0R); //interrupt on match 0
NVIC->ISER[0]=(1<<ISE_TIMER0) | (1<< 22);


// Enter an infinite loop, just incrementing a counter
volatile static int i = 0 ;
while(1) {

//LPC_GPIO0->FIOPIN0 = 255;



i++ ;
}
return 0 ;
}

void TIMER0_IRQHandler(void)
{
LPC_TIM0->IR=1<<MR0INT;



}

void ADC_IRQHandler(void)

{

long a;

a = LPC_ADC->ADGDR;
a = a >>4;

LPC_GPIO0->FIOPIN0 = a;


LPC_UART0->THR = a;



//LPC_ADC->ADGDR = 0<< 31;
//LPC_GPIO0->FIOSET0 = 255;
//asm("nop");
//asm("nop");

//LPC_GPIO0->FIOCLR0 = 255;


}
Go to the top of the page
 
+Quote Post
codier
сообщение Jan 14 2011, 11:31
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 21-01-05
Пользователь №: 2 113



А как конкретно он не работает? Ничего не выдаёт? Сразу заметил немного кривую выставку значений регистров DLL и DLM, значения считали на калькькуляторе? Действительно ли нужен дробный делитель?

Вот код, который использую я:
Код
void  LPC17xx_UART_Init(uint32_t baudrate)
{
    LPC_PINCON->PINSEL0 |= 0x00000050;       /* RxD0 and TxD0 */

    /* PCLK_UART0=CCLK/2 */
    LPC_SC->PCLKSEL0 &= ~(3 << 6);              
    LPC_SC->PCLKSEL0 |=  (2 << 6);          /* PCLK_UART0 = CCLK/2   (50MHz) */

    uint32_t pclk = SystemCoreClock / 2;
    
    LPC_UART0->FDR = 0x10;        // disable fractional baudrate
    LPC_UART0->LCR = 0x83;        /* 8 bits, no Parity, 1 Stop bit */
    uint32_t  Fdiv = ( pclk / 16 ) / baudrate;    /*baud rate */
    LPC_UART0->DLM = Fdiv / 256;                            
    LPC_UART0->DLL = Fdiv % 256;
    LPC_UART0->LCR = 0x03;        /* DLAB = 0 */
    LPC_UART0->FCR = 0x07;        /* Enable and reset TX and RX FIFO. */
}

Go to the top of the page
 
+Quote Post
induke
сообщение Jan 14 2011, 15:27
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 14-09-09
Пользователь №: 52 354



Цитата(codier @ Jan 14 2011, 17:31) *


не выдает ничего
хм..........
заработало
где же я опшипся............

Сообщение отредактировал IgorKossak - Jan 14 2011, 18:31
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016