11-Envoi d'un message liaison série
Envoi d'un message via la liaison série
Voici un petit programme qui permet d'envoyer un message par la liaison série du MPS430.
Créer un nouveau projet CCS.
Donner lui un nom. Exemple Communication.
Puis faire un clique sur Finish.
Effacer le code qui se trouve dans main.c. Pour cela faire un crtl+a et appuyer sur la touche Suppr.
Copier le code ci dessous.
#include "msp430.h"
void UART_puts(char * s); // Déclaration de la fonction envois caractère
void pause(int a); // Déclaration de la fonction pause
int main(void) {
WDTCTL = WDTPW + WDTHOLD; // Arrêt du watchdog
//Initialisation DCO Digitally Controlled Oscillator
if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
{
while(1); // If calibration constants erased
// do not load, trap CPU!!
}
BCSCTL1 = CALBC1_1MHZ; // Réglage du DCO Digitally Controlled Oscillator à 1Mhz
DCOCTL = CALDCO_1MHZ;
//Initialisation de l'UART
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2; // Secondary peripheral module function is selected.
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
// Début du programme
while(1) {
UART_puts("Bonjour!\r\n"); //Envois du message
pause(1000); // Pause de 1 seconde
}
}
// Envois caractéres
void UART_puts(char * s) {
while (*s) {
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer disponible?
UCA0TXBUF = *s++;
}
}
// Pause de 1ms
void pause(int a) {
int i=0;
while (i<a) {
_delay_cycles(1000);
i++;
}
}
Et le coller dans le programme main.c.Pour cela faire un crt+v.
Téléchargement du programme ici.
Faire un clique sur l'insecte.
Puis sur le signe play.
Lancer le logiciel.
Configurer le en fonction de votre configuration. Pour moi:
Voila toute les 1 seconde le Launchpad envoie un
Mise à jour 30/07/2014
Créé avec HelpNDoc Personal Edition: Générateur complet de livres électroniques Kindle