Página 1 de 1

Converte bibliotec

MensagemEnviado: 23 Set 2013 14:54
por longo.251272
Boa tarde pessoal,

Comprei um kit que vem com um ARM da família STM32F4xx onde vem um exemplo em Keil para o Touch LCD usando includes da família STM32F1xx.

Preciso alterar esse exemplo para que funcione utilizando os includes da família STM32F4xx na ferramente CoIDE.
Esbarrei em alguns pontos, não estou tendo sucesso. Por isso estou optando em pagar alguém para fazer essas mudanças.

Quem tiver interesse me contacte pela MP.

Obrigado pessoal.

O kit é este
http://www.wvshare.com/product/Open407I-C-Package-B.htm

Re: Converte bibliotec

MensagemEnviado: 23 Set 2013 23:08
por proex
Vc esta usando a Standart Periferals LIb da ST?

Que controlador tem esse display?

Eu já fiz isso para o 407, se precisar de ajuda..........


.

Re: Converte bibliotec

MensagemEnviado: 24 Set 2013 09:43
por longo.251272
3.2inch 320x240 Touch LCD B.pdf
proex escreveu:Vc esta usando a Standart Periferals LIb da ST?

Que controlador tem esse display?

Eu já fiz isso para o 407, se precisar de ajuda..........


.


O controlador do LCD é SSD1289 e o do Touch é XPT2046. Em anexo esto o circuito.

Eu peguei um exemplo em keil que veio na placa e comecei a transferir para o CoIDE alterando as bibliotecas para as stm32f4xx e enrosquei nesse comando, SysTick_CounterCmd(SysTick_Counter_Clear);.
A função esta presente na biblioteca stm32f10x_systick.h, mas ocorre o erro 24: error: 'SysTick_Counter_Clear' undeclared (first use in this function).

Estou começando no ARM e preciso ao menos fazer o LCD funcionar para poder brincar com a placa e postar os resultados nele.

Obrigado pela atenção

Re: Converte bibliotec

MensagemEnviado: 24 Set 2013 10:59
por proex
No 407 nao existe a funçao SysTick_Counter_Clear. Ela só foi adotada na familia 32f1xx. Apague essa linha no seu projeto. Aconselho vc usar a lib Stardard Peripherals da ST para o 407.

No 407 a inicializaçao do SysTick fica no arquivo <core_cm4.h>

Não há porque resetar o SysTick. Veja como eu uso:

SysTick_Config(SystemCoreClock / 23996) // habilita a Interrupcao do SysTick com o tempo apontado (SystemCoreClock / 23996)

// rotina de interrupçao do SysTick

void SysTick_Handler(void)
{
suas instruções vão aqui
}
O SysTick_Handler fica no arquivo <stm32f4xx_it.c>


Sem a lib Stardard Peripherals da ST para o 407 vai ficar esquisito.

Re: Converte bibliotec

MensagemEnviado: 25 Set 2013 11:08
por longo.251272
Bom dia Poex,

Procurei o arquivo stm32f4xx_it.c mas não achei no repositório do CoIDE. Qual IDE você esta usando ?

Alias, entrei no site da sua assinatura, suas produtos são muito bem acabados.

Re: Converte bibliotec

MensagemEnviado: 25 Set 2013 12:28
por proex
Obrigado pelo elogio.

O stm32f4xx_it.c é um arquivo da biblioteca Standard Peripherals da ST. Ou seja, vc só vai encontrar no site da ST. http://www.st.com/web/en/catalog/tools/PF257901

Vc tem que incluir essa biblioteca no seu projeto e usar as funções que existem lá, é uma mão na roda.

Keil.

Re: Converte bibliotec

MensagemEnviado: 25 Set 2013 14:08
por longo.251272
Pelo que eu li sobre o SysTick_Config no exemplo STM32F4xx_StdPeriph_Examples/SysTick/SysTick_Example/main.c. Vou ter que trabalhar com interrupção.

A rotina que preciso alterar é essa abaixo. Ela esta esperando o SysTick_FLAG_COUNT zerar para sair do loop. Será que a melhor opção sera usar o exemplo acima ?

cpp code
/*******************************************************************************
* Function Name : delay_us
* Description :
* Input : - Nus:
* Output : None
* Return : None
* Attention :
*******************************************************************************/
void delay_us(u32 Nus)
{
SysTick_SetReload(delay_fac_us * Nus);
SysTick_CounterCmd(SysTick_Counter_Clear);
SysTick_CounterCmd(SysTick_Counter_Enable);
do
{
Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT);
}while (Status != SET);
SysTick_CounterCmd(SysTick_Counter_Disable);
SysTick_CounterCmd(SysTick_Counter_Clear);
}

Re: Converte bibliotec

MensagemEnviado: 08 Out 2013 10:09
por longo.251272
Tinha uma rotina de delay de us no exemplo e acabei usando ela para montar o delay de ms.

cpp code
/*******************************************************************************
* Function Name : DelayUS
* Description :
* Input : - cnt:
* Output : None
* Return : None
* Attention : None
*******************************************************************************/
static void DelayUS(vu32 cnt)
{
uint16_t i;
for(i = 0;i<cnt;i++)
{
uint8_t us = 12;
while (us--)
{
;
}
}
}

/*******************************************************************************
* Function Name : DelayMS
* Description :
* Input : - cnt:
* Output : None
* Return : None
* Attention : None
*******************************************************************************/
static void DelayMS(vu32 cnt)
{
uint16_t i;
for(i = 0;i<cnt;i++)
{
uint8_t us = 1000;
while (us--)
{
DelayUS(1);
}
}
}


Compilou beleza, o CoIDE gravou e entra em debug, mas não esta escrevendo nada no LCD.

Alguém tem mais alguma sugestão ?

Re: Converte bibliotec

MensagemEnviado: 08 Out 2013 11:48
por longo.251272
Já funcionou. Agora só falta o Touch, não estou conseguindo buscar as coordenadas do toque.

Valeu pessoal.

Re: Converte bibliotec

MensagemEnviado: 08 Out 2013 16:20
por longo.251272
Resolvido.

Desconectando o JTAG funcionou. Não sei o motivo ainda.