架构师_程序员_码农网

N Recuperar palavra-passe
Registar

QQ登录

Apenas um passo para começar

Pesquisar
Ver:6245|Representação: 0
打印 上一主题 下一主题

Zigbee Journey (II): O primeiro programa CC2430 - Experiência com LEDs a piscar

[Copiar link]
L 跳转到指定楼层
o proprietário do edifício
发表于 2014-10-30 23:15:39|只看该作者回帖奖励|ReverseBrowse|Read Mode
I. Retomar de onde ficámos

No artigo anterior , "Zigbee Journey (I): The Beginning", apresentámos brevemente o Zigbee e o seu ambiente de desenvolvimento, OK, agora que as ferramentas estão completas, surge uma questão: como usar o software e o hardware para escrever um programa que possa ser executado?

Este artigo é basicamente para responder à pergunta acima: para "luz LED a piscar" como um exemplo de uma pequena experiência, como configurar o IAR para o desenvolvimento de programas baseados no CC2430, como usar o IAR para escrever e depurar o programa online.

Configuração do IAR

O IAR é uma poderosa plataforma de desenvolvimento incorporado que suporta muitos tipos de chips, e cada projeto no IAR pode ter a sua própria configuração, incluindo o tipo de dispositivo, Heap/Stack, Linker, Debugger, etc.

(1) Novo espaço de trabalho e projeto

Em primeiro lugar, crie uma nova pasta ledtest, abra o IAR, selecione o menu principal File -> New -> Workspace para criar um novo espaço de trabalho.

Selecione Project -> Create New Project -> Empty Project, clique em OK, e salve o arquivo do projeto na pasta ledtest, nomeado como: ledtest.ewp (como abaixo).

(2) Configurar as opções gerais

Definição do objetivo: Dispositivo: CC2430;

Modo de código: Near;

Modelo de dados: Large;

Convenção de chamada: pilha XDATA reetrante

Configuração do ponteiro de dados: Número de DPTRs: 1

Configuração de pilha/seap: Tamanho da pilha XDATA: 0x1FF

(3) Definições do ligador

Ficheiro de comando do ligador: select lnk51ew_cc2430.xcl

(4) Definições do depurador:


Driver: Texas Instruments (esta experiência para a depuração da máquina real, então escolha TI; se outros procedimentos para usar o emulador IAR, Simulador opcional) Dispositivo Ficheiro de descrição: CC2430.ddf

Neste ponto, a configuração IAR para este experimento é basicamente terminado, o seguinte para introduzir a sua implementação de codificação.

Em terceiro lugar, a preparação do código do programa(1) Novo ficheiro de programa

Escolha File->New->File, crie um novo arquivo main.c.

(2) Introduzir ficheiros de cabeçalho

Os programas baseados no CC2430 devem incluir uma referência a ioCC2430.h, que define o mapeamento dos endereços dos vários tipos de registos de funções especiais (SFRs) do CC2430.

#include //Introduzir o ficheiro de cabeçalho correspondente ao CC2430 (contém a definição de cada SFR)

Este ficheiro está incorporado no IAR (semelhante ao stdio.h), o rato para esta linha de código, clique com o botão direito do rato, selecione OPen "ioCC2430.h", pode ver o conteúdo completo deste ficheiro de cabeçalho.

(3) Definir os pinos do LED

Verifique o diagrama de circuito da placa de desenvolvimento, como mostrado abaixo:

Sabe-se que led1~4 são controlados pelos pinos P1_0~P4_0 respetivamente, então podemos definir led1, led2, led3, led4 como pinos P1_0, P2_0, P3_0, P4_0 respetivamente.


#define led1 P1_0 //define o LED1 como controlo da porta P1_0 #define led2 P1_1

//define led2 como controlo da porta P1_1 #define led3 P1_2 //define led3 como controlo da porta P1_2 #define led4
P1_3 //define led4 para o controlo do porto P1_3

(4) Função principal

Em seguida, comece a escrever a função principal.

Em primeiro lugar, antes de utilizar as portas P1.0~P1.4, é necessário configurar o seu modo de funcionamento e a direção de entrada/saída, o que envolve dois SFRs: P1SEL, P1DIR.


P1SEL = 0x00; //Definir P1 como uma porta E/S comum P1DIR |= 0x0F; & nbsp; //Definir P1.0 P1.1 P1.2 P1.3 como saídas

Dicas de Zigbee
CC2430 tem P0_0 ~ P0_7, P1_0~P1_7, P2_0~P2_7 totalizando 21 portas I/O. Elas podem ser usadas como E/S digitais de uso geral ou para conectar E/S periféricas, como ADC, timer/contador ou USART.
Existem três tipos de registos no SFR do CC2430 que podem ser usados para configurar estas portas IO:
①PxSEL (x é 0/1/2): seleção da função da porta P0/P1/P2
PxSEL (x é 0/1/2): Seleção da função da porta P0/P1/P2 nbsp;0: E/S digital de uso geral, 1: E/S periférica, padrão padrão é 0
PxDIR (x é 0/1/2): direção da porta P0/P1/P2
& nbsp;0: entrada, 1: saída, a predefinição é 0
③PxINP (x é 0/1): modo de entrada da porta P0/P1
0: para cima, 1: saída, padrão predefinido 0 nbsp;0: pull-up/down, 1: tri-state, a predefinição é 0
A configuração é necessária quando se utiliza a porta IO; se estiver predefinida, adopta a predefinição do sistema.

Em seguida, inicialize os 4 LEDs, defina-os como todos apagados:




led1 = 1; led2 = 1; led3 = 1; led4 = 1.

Finalmente, escreve o código do efeito de piscar dos LEDs:






led1 = 0; //led1 a piscar Delay(10); led1 = 1; Delay(10); led2




= 0; //led2 a piscar Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 a piscar Delay(10); /





//led3 a piscar Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 a piscar &


nbsp; Delay(10); led4 = 1; Delay(10);


Isto envolve uma sub-função de atraso Delay(unsigned char n):





v oid Delay(unsigned char n) { unsigned char i; unsigned int j; for(i = 0; i < n; i++) &nbsp


; for(j = 1; j; j++) ; }

(5) Descrição geral do código

Combine o código acima como um todo, como mostrado abaixo:

//Introduzir ficheiros de cabeçalho
#include //introduzir o ficheiro de cabeçalho correspondente ao CC2430 (incluindo a definição de cada SFR)

//Definir os pinos dos LEDs
#define led1 P1_0 //define LED1 para controlo da porta P1_0
#define led2 P1_1 //define o LED2 como controlo da porta P1_1
#define led3 P1_2 //define o LED3 como controlo da porta P1_2
#define led4 P1_3 //define LED4 para controlo da porta P1_3 //subrotina Delay
void Delay (unsigned char n) {
unsigned char i.
unsigned int j.
for (i = 0; i < n; i++)
for (j = 1; j; j++)
;
}

void main (void )
{
P1SEL = 0x00; //Definir P1 como porta de E/S normal
P1DIR |= 0x0F; //Definir P1.0 P1.1 P1.2 P1.3 como saídas

led1 = 1; //inicialização, todas as 4 luzes led apagadas
led2 = 1; //inicialização, todos os 4 led's desligados
led3 = 1; led4 = 1; //inicialização, todos os 4 LEDs desligados
led2 = 1; led3 = 1; led4 = 1; //inicializar, todos os 4 leds desligados

while(1 ) //iniciar ciclo
{
led1 = 0; //led1 a piscar
Delay (10 ); //Delay (10 ); //Delay (10 ); //Delay (10 )
delay(10); led1 = 1; //led1 pisca
Delay (10 ).

led2 = 0; //led2 está a piscar
Delay (10 ); led2 = 1; //led2 pisca
led2 = 1; //led2 a piscar
Atraso (10 ).

led3 = 0; //led3 está a piscar
Delay (10 ); led3 = 1; //led3 pisca
led3 = 1; //led3 está a piscar
Atraso (10 ).

led4 = 0; //led4 está a piscar
Delay (10 ); led4 = 1; //led4 pisca
led4 = 1; //led4 está a piscar
Atraso (10 ); //Atraso (10 )
}
}

OK, o código para esta pequena experiência está escrito, não é muito simples ah, hehe~!

Quarto, compilar e depurar

Selecione Project -> Make, compile o código, se for bem sucedido, aparecerá o seguinte resultado:

2011021320413789.jpg
c

Ligar o dispositivo Zigbee na ordem da placa de desenvolvimento Zigbee → Depurador → porta USB do PC , e depois selecionar Project -> Debug, o programa será descarregado automaticamente para a placa de desenvolvimento.

Em seguida, selecionar Debug -> Go para iniciar o programa, e verá os 4 LEDs a piscar em sequência! Embora se trate de uma pequena experiência simples, não pode ser mais simples, mas quando o consegui fazer, fiquei um pouco entusiasmado ~ huh!

V. Conclusão

Neste artigo, a "experiência da luz LED a piscar" é a base, respetivamente, da configuração do IAR, da preparação do código do programa, bem como do processo de compilação e depuração, introduzindo todo o processo de implementação. No próximo, será na compreensão do processo básico de procedimentos de desenvolvimento com base na introdução de vários CC2430 desenvolvimento de experiências básicas envolvendo temporizadores, comunicações em série, conversão AD, sistema de sono e watchdog , etc., por isso fique atento!






Anterior :[Referido] Jornada Zigbee (I): o começo do mundo
Próximo :[Relatório]Jornada do Zigbee (III): Alguns experimentos básicos importantes do CC2430 - interrupções externas
O código da rede de agricultores, apenas publicado no processo de prática, encontrou dificuldades técnicas, não induzir outros em erro.
Tem de iniciar sessão antes de poder voltar a publicar Iniciar sessão | Registar

E sta versão das regras integrais


DISCLAIMER: Todo o software, materiais de programação ou artigos publicados pelo Code Farmer estão limitados a serem utilizados apenas para fins de aprendizagem e investigação; os conteúdos acima referidos não devem ser utilizados para fins comerciais ou ilegais, caso contrário, todas as consequências serão suportadas pelos próprios utilizadores. A informação deste sítio é proveniente da rede, a disputa de direitos de autor não tem nada a ver com este sítio. Deve remover completamente o conteúdo acima do seu computador no prazo de 24 horas após o descarregamento. Se gosta do programa, por favor apoie o software genuíno, compre o registo e obtenha um melhor serviço genuíno. Se houver alguma infração, contacte-nos por correio eletrónico para tratarmos do assunto.

Correio eletrónico To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-17 14:48

Resposta rápidaVoltar ao topoVoltar à lista