pulled put out of lib
still need set __putc as a fuction pointer to the uart_putc
This commit is contained in:
parent
4b22b25e38
commit
00224dd7eb
7 changed files with 66 additions and 19 deletions
|
@ -1,6 +1,8 @@
|
||||||
#ifndef UART1_H
|
#ifndef UART1_H
|
||||||
#define UART1_H
|
#define UART1_H
|
||||||
|
|
||||||
|
#include <types.h>
|
||||||
|
|
||||||
#define UART1_CON ((volatile uint32_t *) 0x80005000)
|
#define UART1_CON ((volatile uint32_t *) 0x80005000)
|
||||||
#define UART1_STAT ((volatile uint32_t *) 0x80005004)
|
#define UART1_STAT ((volatile uint32_t *) 0x80005004)
|
||||||
#define UART1_DATA ((volatile uint32_t *) 0x80005008)
|
#define UART1_DATA ((volatile uint32_t *) 0x80005008)
|
||||||
|
@ -9,7 +11,7 @@
|
||||||
#define UART1_CTS ((volatile uint32_t *) 0x80005014)
|
#define UART1_CTS ((volatile uint32_t *) 0x80005014)
|
||||||
#define UART1_BR ((volatile uint32_t *) 0x80005018)
|
#define UART1_BR ((volatile uint32_t *) 0x80005018)
|
||||||
|
|
||||||
int uart1_putchar(int c);
|
void uart1_putc(char c);
|
||||||
|
|
||||||
#define uart1_can_get() (*UR1CON > 0)
|
#define uart1_can_get() (*UR1CON > 0)
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
#include <mc1322x.h>
|
#include <mc1322x.h>
|
||||||
#include <types.h>
|
#include <types.h>
|
||||||
|
|
||||||
#define __putc(x) putchr(x)
|
#define __putc(x) uart1_putc(x)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structure to hold data to be passed to print function with format.
|
* Structure to hold data to be passed to print function with format.
|
||||||
|
|
6
lib/uart1.c
Normal file
6
lib/uart1.c
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#include <uart1.h>
|
||||||
|
|
||||||
|
void uart1_putc(char c) {
|
||||||
|
while(*UT1CON == 31); /* wait for there to be room in the buffer */
|
||||||
|
*UART1_DATA = c;
|
||||||
|
}
|
|
@ -3,7 +3,7 @@ MC1322X := ..
|
||||||
# all off the common objects for each target
|
# all off the common objects for each target
|
||||||
# a COBJ is made for EACH board and goes the obj_$(BOARD)_board directory
|
# a COBJ is made for EACH board and goes the obj_$(BOARD)_board directory
|
||||||
# board specific code is OK in these files
|
# board specific code is OK in these files
|
||||||
COBJS := tests.o
|
COBJS := tests.o put.o
|
||||||
|
|
||||||
# all of the target programs to build
|
# all of the target programs to build
|
||||||
TARGETS := blink-red blink-green blink-blue blink-white blink-allio \
|
TARGETS := blink-red blink-green blink-blue blink-white blink-allio \
|
||||||
|
|
36
tests/put.c
Normal file
36
tests/put.c
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
#include <mc1322x.h>
|
||||||
|
#include <board.h>
|
||||||
|
|
||||||
|
const uint8_t hex[16]={'0','1','2','3','4','5','6','7',
|
||||||
|
'8','9','a','b','c','d','e','f'};
|
||||||
|
|
||||||
|
void putchr(char c) {
|
||||||
|
while(*UT1CON == 31); /* wait for there to be room in the buffer */
|
||||||
|
*UART1_DATA = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
void putstr(char *s) {
|
||||||
|
while(s && *s!=0) {
|
||||||
|
putchr(*s++);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void put_hex(uint8_t x)
|
||||||
|
{
|
||||||
|
putchr(hex[x >> 4]);
|
||||||
|
putchr(hex[x & 15]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void put_hex16(uint16_t x)
|
||||||
|
{
|
||||||
|
put_hex((x >> 8) & 0xFF);
|
||||||
|
put_hex((x) & 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
void put_hex32(uint32_t x)
|
||||||
|
{
|
||||||
|
put_hex((x >> 24) & 0xFF);
|
||||||
|
put_hex((x >> 16) & 0xFF);
|
||||||
|
put_hex((x >> 8) & 0xFF);
|
||||||
|
put_hex((x) & 0xFF);
|
||||||
|
}
|
10
tests/put.h
Normal file
10
tests/put.h
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#ifndef PUT_H
|
||||||
|
#define PUT_H
|
||||||
|
|
||||||
|
void putchr(char c);
|
||||||
|
void putstr(char *s);
|
||||||
|
void put_hex(uint8_t x);
|
||||||
|
void put_hex16(uint16_t x);
|
||||||
|
void put_hex32(uint32_t x);
|
||||||
|
|
||||||
|
#endif
|
|
@ -1,4 +1,6 @@
|
||||||
#include <mc1322x.h>
|
#include <mc1322x.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "put.h"
|
#include "put.h"
|
||||||
#include "tests.h"
|
#include "tests.h"
|
||||||
|
|
||||||
|
@ -21,30 +23,21 @@ void uart1_init(uint16_t inc, uint16_t mod) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_welcome(char* testname) {
|
void print_welcome(char* testname) {
|
||||||
putstr("mc1322x-test: ");
|
printf("mc1322x-test: %s\n\r",testname);
|
||||||
putstr(testname);
|
printf("board: %s\n\r", "fix print welcom");
|
||||||
putstr("\n\r");
|
|
||||||
putstr("board: ");
|
|
||||||
#if (BOARD == redbee-dev)
|
|
||||||
putstr("redbee-dev");
|
|
||||||
#elif (BOARD == redbee-r1)
|
|
||||||
putstr("redbee-dev");
|
|
||||||
#endif
|
|
||||||
putstr("\n\r");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void dump_regs(uint32_t base, uint32_t len) {
|
void dump_regs(uint32_t base, uint32_t len) {
|
||||||
volatile uint32_t i;
|
volatile uint32_t i;
|
||||||
|
|
||||||
putstr("base +0 +4 +8 +c +10 +14 +18 +1c \n\r");
|
printf("base +0 +4 +8 +c +10 +14 +18 +1c \n\r");
|
||||||
for (i = 0; i < len; i ++) {
|
for (i = 0; i < len; i ++) {
|
||||||
if ((i & 7) == 0) {
|
if ((i & 7) == 0) {
|
||||||
put_hex16(4 * i);
|
printf("%02x",4 * i);
|
||||||
}
|
}
|
||||||
putstr(" ");
|
printf(" %08x",*mem32(base+(4*i)));
|
||||||
put_hex32(*mem32(base+(4*i)));
|
|
||||||
if ((i & 7) == 7)
|
if ((i & 7) == 7)
|
||||||
putstr(NL);
|
printf(NL);
|
||||||
}
|
}
|
||||||
putstr(NL);
|
printf(NL);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue