Updates to style, started Pack documentation

This commit is contained in:
Andreas Mieke 2018-03-15 16:49:13 +01:00
parent 1f0e2aad64
commit a8ba4b7a79
19 changed files with 1037 additions and 37 deletions

View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<package schemaVersion="1.4" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PACK.xsd">
<vendor>HTBL Hollabrunn</vendor>
<name>STD-Pack</name>
<description>HTL Hollabrunn library and include pack</description>
<url></url>
<supportContact></supportContact>
<releases>
<release version="1.0.0" date="2017-07-16">
Initial version
</release>
</releases>
<keywords>
<keyword>HTBL Hollabrunn</keyword>
<keyword>STD Library</keyword>
<keyword>Serbus Library</keyword>
</keywords>
<components>
<component Cclass="HTBL Hollabrunn" Cgroup="Libraries" Csub="STDLib" Cversion="1.0.0">
<description>Standard library for the HTBL</description>
<files>
<file category="header" name="Header/armv10_std.h"/>
<file category="library" name="Library/ARMV10_STD.lib"/>
</files>
</component>
<component Cclass="HTBL Hollabrunn" Cgroup="Libraries" Csub="SerbusLib" Cversion="1.0.0" condition="STDLib">
<description>Serial bus library for the HTBL</description>
<files>
<file category="header" name="Header/armv10_serbus.h"/>
<file category="library" name="Library/armv10_serbus.lib"/>
</files>
</component>
<component Cclass="HTBL Hollabrunn" Cgroup="Assembler" Csub="Includes" Cversion="1.0.0">
<description>Assembler includes for the HTBL</description>
<files>
<file category="header" name="Header/STD_STM32_F103RB_ASM.INC"/>
<file category="header" name="Header/STM32_F103RB_MEM_MAP.INC"/>
</files>
</component>
</components>
<conditions>
<condition id="STDLib">
<description>Standard library</description>
<require Cclass="HTBL Hollabrunn" Cgroup="Libraries" Csub="STDLib" />
</condition>
</conditions>
</package>

View file

@ -0,0 +1,30 @@
;******************************************************************************
;* (C) Copyright HTL - HOLLABRUNN 2009-2010 All rights reserved. AUSTRIA *
;* *
;* File Name: std32_f103rb_std.inc *
;* Autor: Josef Reisinger *
;* Version: V1.00 *
;* Date: 25/10/2010 *
;* Description: Standard Library für ARM Corttex M3 *
;******************************************************************************
;* History: V1.00 creation *
;* *
;******************************************************************************
EXTERN init_leds_switches
EXTERN set_leds
EXTERN get_actual_switches
EXTERN wait_ms
EXTERN wait_10us
EXTERN uart_init
EXTERN uart_put_char
EXTERN uart_get_char
EXTERN uart_put_string
EXTERN uart_clear
EXTERN uart_put_hex
EXTERN nib2asc
EXTERN hex2bcd
EXTERN asc2nib
END

View file

@ -0,0 +1,73 @@
; File soll in Verzeichnis "C:\Keil\ARM\INC\ST\STM32F10x" kopiert werden (Installationspfad µVision)
PERIPH_BB_BASE EQU 0x42000000
PERIPH_BASE EQU 0x40000000
APB2PERIPH_BASE EQU PERIPH_BASE + 0x10000
AHBPERIPH_BASE EQU PERIPH_BASE + 0x20000
GPIOA_BASE EQU APB2PERIPH_BASE + 0x0800
GPIOA_CRL EQU GPIOA_BASE
GPIOA_CRH EQU GPIOA_BASE+0x04
GPIOA_IDR EQU GPIOA_BASE+0x08
GPIOA_ODR EQU GPIOA_BASE+0x0c
GPIOA_BSRR EQU GPIOA_BASE+0x10
GPIOA_BRR EQU GPIOA_BASE+0x14
GPIOA_LCKR EQU GPIOA_BASE+0x18
GPIOB_BASE EQU APB2PERIPH_BASE + 0x0C00
GPIOB_CRL EQU GPIOB_BASE
GPIOB_CRH EQU GPIOB_BASE+0x04
GPIOB_IDR EQU GPIOB_BASE+0x08
GPIOB_ODR EQU GPIOB_BASE+0x0c
GPIOB_BSRR EQU GPIOB_BASE+0x10
GPIOB_BRR EQU GPIOB_BASE+0x14
GPIOB_LCKR EQU GPIOB_BASE+0x18
GPIOC_BASE EQU APB2PERIPH_BASE + 0x1000
GPIOC_CRL EQU GPIOC_BASE
GPIOC_CRH EQU GPIOC_BASE+0x04
GPIOC_IDR EQU GPIOC_BASE+0x08
GPIOC_ODR EQU GPIOC_BASE+0x0c
GPIOC_BSRR EQU GPIOC_BASE+0x10
GPIOC_BRR EQU GPIOC_BASE+0x14
GPIOC_LCKR EQU GPIOC_BASE+0x18
USART1_BASE EQU APB2PERIPH_BASE + 0x3800
USART1_SR EQU USART1_BASE
USART1_DR EQU USART1_BASE+0x04
USART1_BRR EQU USART1_BASE+0x08
USART1_CR1 EQU USART1_BASE+0x0C
USART1_CR2 EQU USART1_BASE+0x10
USART1_CR3 EQU USART1_BASE+0x14
USART1_GTPR EQU USART1_BASE+0x18
RCC_BASE EQU AHBPERIPH_BASE + 0x1000
RCC_CR EQU RCC_BASE
RCC_CFGR EQU RCC_BASE+0x04
RCC_CIR EQU RCC_BASE+0x08
RCC_APB2RSTR EQU RCC_BASE+0x0C
RCC_APB1RSTR EQU RCC_BASE+0x10
RCC_AHBENR EQU RCC_BASE+0x14
RCC_APB2ENR EQU RCC_BASE+0x18
RCC_APB1ENR EQU RCC_BASE+0x1C
RCC_BDCR EQU RCC_BASE+0x20
RCC_CSR EQU RCC_BASE+0x24
RCC_AHBRSTR EQU RCC_BASE+0x28
RCC_CFGR2 EQU RCC_BASE+0x2C
RCC_APB2ENR_IOPAEN EQU 0x0004
RCC_APB2ENR_IOPBEN EQU 0x0008
RCC_APB2ENR_IOPCEN EQU 0x0010
RCC_APB2ENR_USART1EN EQU 0x4000
END

View file

@ -0,0 +1,328 @@
/******************************************************************************/
/* (C) Copyright HTL - HOLLABRUNN 2009-2010 All rights reserved. AUSTRIA */
/* */
/* File Name: armv10_serbus.h */
/* Autor: Jakob Maier */
/* Version: V1.00 */
/* Date: 23/07/2010 */
/* Description: Library für Serielle Busse (I2C und SPI) für ARM Corttex M3 */
/* */
/******************************************************************************/
/* History: 07.05.2010: Jakob Maier creation V1.00 (I2C) */
/* - Beinhaltet alle wesentlichen Unterprogramme */
/* die zur Kommunikation über den I2C-Bus */
/* 28.02.2011: REJ V1.1 */
/* - Library aus Funktionen erstellt */
/******************************************************************************/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __ARMV10_SERBUS_H
#define __ARMV10_SERBUS_H
//Hardware:
//*********
//
//SCL=PB6
//SDA=PB7
//Wichtig: Die Leitungen zur Sicherheit mit 2stk. 4,7kOhm Pull-Up Widerständen an die 3,3V anpassen!
//
//Master Receiver:
//****************
//
//1 Byte + Stop: init (-) start(adr+1,1) - read(&dat,x)
//1 Byte + Stop: init (-) I2C1_read_1(adr+x,&dat)
//
//2 Byte + Stop: init (-) start(adr+1,0) - read(&dat,1) - read(&dat,x)
//2 Byte + Stop: init (-) start(adr+1,0) - I2C1_read_last2(&dat1,&dat2)
//
//3 Byte + Stop: init (-) start(adr+1,0) (-) read(&dat,0) - read(&dat,1) - read(&dat,x)
//3 Byte + Stop: init (-) start(adr+1,0) (-) read(&dat,0) - I2C1_read_last2(&dat1,&dat2)
//
//4 Byte + Stop: init (-) start(adr+1,0) (-) read(&dat,0) (-) read(&dat,0) - read(&dat,1) - read(&dat,x)
//4 Byte + Stop: init (-) start(adr+1,0) (-) read(&dat,0) (-) read(&dat,0) - I2C1_read_last2(&dat1,&dat2)
//
//5 Byte + Stop: init (-) start(adr+1,0) (-) read(&dat,0) (-) read(&dat,0) (-) read(&dat,0) - read(&dat,1) - read(&dat,x)
//...
//n Byte + Stop: init (-) I2C1_read_n(adr+x,daten[],anz)
//
//Master Transmitter:
//*******************
//
//1 Byte + Stop: init (-) start(adr+0,x) (-) send(data,1)
//2 Byte + Stop: init (-) start(adr+0,x) (-) send(data,0) (-) send(data,1)
//3 Byte + Stop: init (-) start(adr+0,x) (-) send(data,0) (-) send(data,0) (-) send(data,1)
//...
//n Byte + Stop (Pause zw. Byteübertragung mögl.): init (-) I2C1_send_n(adr+x,daten[],anz,pause)
//
//Legende:
//********
//
// "(-)": Sofort danach oder nach einer beliebig langen Pause folgt die nächste Operation (Achtung: bei einem Reset kann es zu Error Nr. 0x86 kommen - Die Busleitungen sind noch immer auf 0, da mitten im Datenverkehr abgebrochen wurde)
// " - ": Sofort danach folgt die nächste Operation (Es muss sofort reagiert werden)
//
/*-------------------------------------------------- I2C - Fehlercodes: -----------------------------*/
// Ein Fehlercode beinhaltet zwei Arten von Daten: Wo der Fehler auftrat und was der Fehlergrund ist.
// Die ersten 4bit (MSB) geben an, in welcher Routine sich der Fehler ereignet hat (Fehlerposition), die
// letzten 4bit (LSB) geben die Fehlerart an. Ist kein Fehler aufgetreten, wird 0x00 als Code verwendet,
// die Fehlerposition nicht miteinberechnet.
// Fehlercode-Berechnung: "Fehlercode" = "Fehlerposition" | "Fehlerart";
//
#define info_success 0x00 //Kein Fehler aufgetreten (immer 0x00)
/*------------ Fehlerposition:---------*/
#define err_at_init 0x80 //Fehler in der Initialisierungsroutine
#define err_at_start 0x40 //Fehler in der Start- und Adressierungsroutine
#define err_at_send 0x20 //Fehler in der Senderoutine
#define err_at_read 0x10 //Fehler in der Empfangsroutine
/*----------- Fehlerarten:-------------*/
#define error_I2C1_running 0x01 //Der I2C1-Bus ist bereits in Betrieb und kann nicht mehr initialisiert werden
#define error_I2C1_disabled 0x02 //Es kann keine Startbedingung erzeugt werden, da der Bus außer Betrieb ist (Keine Initialisierung)
#define error_no_master 0x03 //Der I2C1-Bus befindet sich nicht im Mastermode ("start()": Peripherie-Fehler; "send()": Startbedingung erzeugt?)
#define error_no_transmitter 0x04 //Es können keine Daten gesandt werden, da der Slavebaustein zum lesen Adressiert wurde (R/W-bit muss 0 sein)
#define error_not_addressed 0x05 //Die Hardware wurde nicht adressiert, NACK erhalten (Wurde die richtige Adresse eingestellt?)
#define error_timeout_busy 0x06 //Der Bus kann derzeit noch nicht initialisiert werden, da bereits ein Datenverkehr ausgeführt wird
//(Leitung auf "LOW" - PullUp-Widerstände vorhanden?)
#define error_timeout_start 0x07 //Bei der Startbedingung ist es zu einem Time-Out gekommen (Ist der Bus belegt (Multimaster-Mode)?,
//Ist vielleicht noch eine Datenübertragung im gange?)
#define error_timeout_stop 0x08 //Bei der Stopbedingung ist es zu einem Time-Out gekommen (Ist vielleicht noch eine Datenübertragung im gange?)
#define error_timeout_send 0x09 //Die Daten wurden nicht übertragen (Timeout) (Verwendet der Slave Clock-Streching?
//Sind die Busleitungen auf "LOW" gefallen?)
#define error_NACK 0x0A //Der Slave hat auf die Daten mit einem NACK geantwortet (Der Fehler liegt auf der Slave-Seite oder es wurde
//dessen Übertragungsprotokoll verletzt/beendet)
#define error_no_data 0x0B //Bei "read()". Entweder wurde noch kein Baustein adresiert oder nach Beendigung der letzten Übertragung
//sind keine ausstehenden Daten mehr vorhanden (Adressiert? "I2C1_data_available()" verwendet?)
#ifdef ARMV10_SERBUS_MOD
#define EXPORT
#else
#define EXPORT extern
#endif
/* ---------------------------Exported functions ---------------------------- */
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C_error_message */
/* */
/* Aufgabe: Gibt eine I2C Fehleranalyse auf UART aus */
/* Input: I2C Fehlercode */
/* return: I2C Fehlercode */
/* Remark: Der Fehler wird als Rückgabewert weitergegeben um das UPro direkt */
/* in einer Fehlerabfrage verwenden zu können: */
/* "if(I2C_error_message(I2C1_init())!=info_success)" */
/******************************************************************************/
EXPORT char I2C_error_message(char errorcode);
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C1_init */
/* */
/* Aufgabe: Initialisiert den I2C1-Bus im Standard-Modus (100kHz) */
/* SCL=PB6, SDA=PB7 . Es wird die GPIOB und I2C1-Peripherie enabled. */
/* I2C1 kann mit "I2C1_disable()" disabled werden. */
/* Input: - */
/* return: I2C Fehlercode */
/* Remark: Nächster Schritt: "I2C1_start()" */
/* I2C Fehlerposition 0x80 */
/******************************************************************************/
EXPORT char I2C1_init(void);
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C1_disable */
/* */
/* Aufgabe: Schaltet die I2C1-Peripherie ab. Es ist keine Buskommunikation */
/* mehr möglich. Die Ports werden als Output konfiguriert und auf */
/* 1 gesetzt. */
/* Input: - */
/* return: - */
/* Remark: */
/* */
/******************************************************************************/
/* !!!!!!!!!!!!!!!!! Noch nicht getestet: !!!!!!!!!!!!!!!!!!!!!! */
EXPORT void I2C1_disable(void);
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C1_start */
/* */
/* Aufgabe: Erzeugt eine Startbedingung und Adressiert einen Slavebaustein. */
/* Je nach R/W-Bit ist man Master Transmitter (0) oder Master */
/* Receiver(1). */
/* Input: "adresse": 7bit Adresse und Read/!Write - Bit "single": */
/* Wenn das R/W-Bit 1 ist und nur ein Byte empfangen werden soll ist */
/* "single" ungleich 0. */
/* return: Fehlercode */
/* Remark: I2C Fehlerposition 0x40 */
/* Nächster I2C Schritt: Senden oder Empfangen */
/******************************************************************************/
EXPORT char I2C1_start(char adresse, char single);
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C1_get_mode() */
/* */
/* Aufgabe: Übergibt den Status des I2C-Busses (Slave, Master Transmitter */
/* oder Master Receiver). Damit kann im Nachhinein festgestellt */
/* werden was das R/W-Bit war. */
/* Input: - */
/* return: 0x00: Der Bus ist deaktiviert */
/* 0x01: Der Bus wurde als Slave adressiert */
/* 0x02: Master Transmitter */
/* 0x03: Master Receiver */
/* Remark: */
/* */
/******************************************************************************/
// !!!!!!!!!!!!!!!!!!!!!! Noch nicht getestet !!!!!!!!!!!!!!!!!!!!
EXPORT char I2C1_get_mode(void);
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C1_data_available() */
/* */
/* Aufgabe: Überprüft ob im Master-Receiver Modus Daten die Empfangen */
/* wurden zum Abruf bereit stehen. Damit kann im Unterprogramm */
/* "I2C1_read()" eine Endlosschleife vermieden werden. */
/* Input: - */
/* return: 0x00: Keine Daten vorhanden */
/* 0x01: Daten im Datenregister */
/* */
/* Remark: */
/* */
/******************************************************************************/
EXPORT char I2C1_data_available(void);
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C1_read */
/* */
/* Aufgabe: Liest die Daten aus, die vom Slave gesendet wurden. Sind keine */
/* Daten vorhanden wird solange gewartet, bis welche empfangen */
/* wurden */
/* Input: "daten": Variable in die die Daten geschrieben werden. */
/* "last": Wenn dass das vorletzte Byte ist dass empfangen werden */
/* soll, ist "last" ungleich 0 */
/* return: Fehlercode */
/* Remark: I2C Fehlerposition 0x10 */
/* Nächster Schritt: Lesen oder nach Stop "I2C1_data_available()" */
/* bzw. Start oder Disable */
/******************************************************************************/
EXPORT char I2C1_read(char *daten, char last);
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C1_read_1 */
/* */
/* Aufgabe: Erzeugt eine Startbedingung, Übernimmt die Adressierung, empfangt*/
/* ein einzelnes Byte und erzeugt dann wieder eine Stopbedingung */
/* Input: "adresse": Slaveadresse (Das R/W-Bit wird im UPro auf 1 gesetzt) */
/* "daten": Variable in die das empfangene Byte geschrieben wird */
/* return: Fehlercode */
/* Remark: I2C Fehlerposition 0x40 und 0x10 */
/* Nächster Schritt: Start oder Disable */
/******************************************************************************/
EXPORT int I2C1_read_1(char adresse, char *daten);
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C1_read_last2 */
/* */
/* Aufgabe: Empfängt 2 Bytes und erzeugt dann eine Stopbedingung. */
/* Kann bei einem datenempfang ab 2 Bytes immer verwendet werden */
/* */
/* Input: "daten1": Variable für das vorletzte Empfangene Byte */
/* "daten2": Das letzte Empfangsbyte */
/* */
/* return: Fehlercode */
/* Remark: I2C Fehlerposition: 0x10 */
/* Nächster I2CSchritt: Start oder Disable */
/******************************************************************************/
EXPORT char I2C1_read_last2(char *daten1, char *daten2);
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C1_read_n */
/* */
/* Aufgabe: Liest eine bestimmte Anzahl an Daten ein. */
/* Übernimmt auch die Startbedingung, die Adressierung */
/* und die Stopbedingung. Das R/W-Bit wird im UPro gesetzt. */
/* Input: "adresse": Adresse des Slave-Bausteins */
/* "daten[]": Array, in das die Empfangsdaten geschrieben werden */
/* "anzahl": Wie viele Bytes empfangen werden sollen (ab 1 Byte) */
/* return: Fehlercode */
/* Remark: I2C Fehlerposition: 0x40 und 0x20 */
/* */
/******************************************************************************/
EXPORT char I2C1_read_n(char adresse, char daten[],int anzahl);
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C1_send */
/* */
/* Aufgabe: Sendet ein einzelnes Byte an den Slave und kann dann eine */
/* Stopbedingung erzeugen. Das R/W-Bit muss 0 (Master Transmitter) */
/* gewesen sein. */
/* */
/* Input: "daten": Die Sendedaten */
/* "stop": Wenn dies Variable ungleich 0 ist, wird nach der */
/* Übertragung eine Stopbedingung erzeugt */
/* return: */
/* Remark: I2C Fehlerposition: 0x20 */
/* Nächster Schritt: Senden, oder wenn "stop" ungleich 0: */
/* Start oder Disable */
/******************************************************************************/
EXPORT char I2C1_send(char daten,char stop);
/******************************************************************************/
/* U N T E R P R O G R A M M: I2C1_send_n */
/* */
/* Aufgabe: Übernimmt die Startbedingung und die Adressierung. */
/* Sendet danach eine Reihe an Daten an den Slave wobei dazwischen */
/* Pausen eingelegt werden können. Danach kommt es zu einer */
/* Stopcondition */
/* Input: "adresse": Slaveadresse (Das R/W-Bit wird im UPro auf 0 gesetzt) */
/* "daten[]": Array dessen Inhalt an den Slave gesendet wird */
/* "anzahl": Anzahl der Bytes aus dem Array die gesendet werden */
/* "Pause": Pause in Millisekunden die zwischen den Übertragungen */
/* eingelegt wird */
/* return: Fehlercode */
/* Remark: I2C Fehlerposition: 0x40 und 0x20 */
/* Nächster Schritt: Start oder Disable */
/******************************************************************************/
EXPORT char I2C1_send_n(char adresse, char daten[],int anzahl,int pause);
/******************************************************************************/
/* U N T E R P R O G R A M M: SPI1_Init */
/* */
/* Aufgabe: Initialisiert SPI 1 Schnittstelle */
/* Input: */
/* return: */
/* Remark: */
/* */
/******************************************************************************/
EXPORT void SPI1_Init(void);
/******************************************************************************/
/* U N T E R P R O G R A M M: SPI1_Send */
/* */
/* Aufgabe: Sendet 1 Byte via SPI1 Schnittstelle */
/* Input: */
/* return: */
/* Remark: */
/* */
/******************************************************************************/
EXPORT void SPI1_Send(unsigned char send);
/******************************************************************************/
/* U N T E R P R O G R A M M: SPI1_Receive */
/* */
/* Aufgabe: Empfängt 1 Byte von SPI1 Schnittstelle */
/* Input: */
/* return: */
/* Remark: */
/* */
/******************************************************************************/
EXPORT unsigned char SPI1_Receive(void);
#undef EXPORT
#endif /* __ARMV10_SERBUS_H */
/******************* (C) HTL - HOLLABRUNN 2009-2010 *****END OF FILE****/

View file

@ -0,0 +1,396 @@
/******************************************************************************/
/* (C) Copyright HTL - HOLLABRUNN 2009-2010 All rights reserved. AUSTRIA */
/* */
/* File Name: armv10_std.h */
/* Autor: Josef Reisinger */
/* Version: V1.00 */
/* Date: 07/05/2010 */
/* Description: Standard Library für ARM Corttex M3 */
/******************************************************************************/
/* History: V1.00 creation */
/* V1.01 09.06.2010 REJ: */
/* Add Bit banding Adresses for LED/Switsches Board */
/* V2.0 19.02.2011 REJ: */
/* - dil_taster_init, dil_led_init hinzugefügt */
/* - lcd_setcursor auf 4 zelige anzeige erweiterst */
/* - Bitbanding Definitiones von Pointer (Adresse der */
/* Speicherzelle auf Inhalt der Speicherzelle umgestellt */
/* - Fehler bei Portmodi Settings in Init_led Switsches */
/* korrigiert */
/******************************************************************************/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __ARMV10_STD_H
#define __ARMV10_STD_H
/* Includes ------------------------------------------------------------------*/
#include <stm32f10x.h>
#include <stdio.h>
/*----------------------------- Define Pins for LED and Swistches--------------*/
/* Einzel-Portpins im Bitbandbereich festlegen */
#define GPIOA_IDR GPIOA_BASE + 2*sizeof(uint32_t) // Calc peripheral address GPIOA IDR
#define GPIOA_ODR GPIOA_BASE + 3*sizeof(uint32_t)
#define GPIOB_IDR GPIOB_BASE + 2*sizeof(uint32_t)
#define GPIOB_ODR GPIOB_BASE + 3*sizeof(uint32_t) // Calc peripheral address GPIOB ODR
#define GPIOC_IDR GPIOC_BASE + 2*sizeof(uint32_t)
#define GPIOC_ODR GPIOC_BASE + 3*sizeof(uint32_t)
// Calc Bit Band Adress from peripheral address: a = peripheral address b = Bit number
#define BITBAND_PERI(a,b) ((PERIPH_BB_BASE + (a-PERIPH_BASE)*32 + (b*4)))
#define SW0 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,0))) // PA0
#define SW1 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,1))) // PA1
#define SW2 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,2))) // PA2
#define SW3 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,3))) // PA3
#define SW4 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,4))) // PA4
#define SW5 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,5))) // PA5
#define SW6 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,6))) // PA6
#define SW7 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,7))) // PA7
#define PIEZO *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,0))) //Portleitung des Piezo-Summers (PB0)
#define LED0 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,8))) // PB8
#define LED1 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,9))) // PB9
#define LED2 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,10))) // PB10
#define LED3 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,11))) // PB11
#define LED4 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,12))) // PB12
#define LED5 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,13))) // PB13
#define LED6 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,14))) // PB14
#define LED7 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,15))) // PB15
#define DIL_LED1 *((volatile unsigned long *)(BITBAND_PERI(GPIOD_ODR,2))) //PD2
#define DIL_LED2 *((volatile unsigned long *)(BITBAND_PERI(GPIOC_ODR,13))) //PC13
#define DIL_LED3 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_ODR,8))) //PA8
#define DIL_TASTER1 *((volatile unsigned long *)(BITBAND_PERI(GPIOC_IDR,5))) //PC5
#define DIL_TASTER2 *((volatile unsigned long *)(BITBAND_PERI(GPIOC_IDR,13))) //PC13
#define DIL_TASTER3 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,8))) //PA8
/*--------------------------------- Definitions LCD --------------------------*/
#define LineLen 16 /* Width of LCD (in characters) */
#define NumLines 2 /* Hight of LCD (in lines) */
/* ---------------------Vordefinierte Frequenzen fuer Tonerzeugung -----------*/
#define ton_C1 262
#define ton_D1 293
#define ton_E1 329
#define ton_F1 349
#define ton_G1 391
#define ton_A1 440
#define ton_H1 493
#define ton_C2 523
#define ton_D2 587
#define ton_E2 659
#define ton_F2 698
#define ton_G2 783
#define ton_A2 880
#define ton_H2 987
#define ton_C3 1046
/* ------------------- Vordefinierte Längen (ms) für Tonerzeugung --------------*/
#define ganze 800
#define halbe 400
#define viertel 200
#define achtel 100
#define sechzehntel 50
#ifdef ARMV10_STD_MOD
#define EXPORT
#else
#define EXPORT extern
#endif
/* ----------------------------Exported functions ---------------------------- */
/* ------------------------- Reset and Clock Control -----------------------*/
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: Set System Clock to 72MHz */
/* Input: none */
/* return: none */
/******************************************************************************/
EXPORT void set_clock_72MHz(void);
/* ------------------------- LED/ Switches Board Funktions -------------------*/
/******************************************************************************/
/* U N T E R P R O G R A M M: init_leds_switches */
/* */
/* Aufgabe: Initialisiert Portleitungen für LED / Schalterplatine */
/* Input: */
/* return: */
/******************************************************************************/
EXPORT void init_leds_switches(void);
/*******************************************************************************/
/* U N T E R P R O G R A M M: set_leds */
/* */
/* Aufgabe: gibt hexadezimalen Wert in auf 8 Leds aus */
/* (an Port 0 angeschlossen) */
/* Input: value = Wert auf den LEDS gesetzt werden sollen */
/* return: */
/******************************************************************************/
EXPORT void set_leds (char value);
/******************************************************************************/
/* U N T E R P R O G R A M M: get_switches */
/* */
/* Aufgabe: liest aktuelle Schalterstellung ein */
/* Input: */
/* return: aktuelle Schalterstellung */
/******************************************************************************/
EXPORT char get_switches(void);
/******************************************************************************/
/* U N T E R P R O G R A M M: dil_taster_init */
/* */
/* Aufgabe: Initialisiert Portleitung für Taster auf DIL */
/* Input: */
/* return: */
/******************************************************************************/
EXPORT void dil_taster_init(void);
/******************************************************************************/
/* U N T E R P R O G R A M M: dil_led _init */
/* */
/* Aufgabe: Initialisiert Portleitung für LEDS auf DIL */
/* Input: */
/* return: */
/******************************************************************************/
EXPORT void dil_led_init(void);
/* ------------------------- Miscellaneous Funktions --------------------------*/
/******************************************************************************/
/* U N T E R P R O G R A M M: WAIT_MS */
/* */
/* Aufgabe: Wartet die angegebene Anzahl an Millisekunden */
/* Input: ms = Anzahl der zu wartenden Millisekunden */
/* return: */
/******************************************************************************/
EXPORT void wait_ms(int ms);
/******************************************************************************/
/* U N T E R P R O G R A M M: wait_10us */
/* */
/* Aufgabe: Wartet 10µs */
/* Input: */
/* return: */
/******************************************************************************/
EXPORT void wait_10us(void);
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: Function converts a Nibble(0-F) to an ASCII ('0'-'F') */
/* Input: nib: Nibble to convert */
/* Output: nib: Converted Nibble */
/* return: - */
/******************************************************************************/
EXPORT void nib2asc(char *nib);
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: Function converts an ASCII('0'-'F') to a Nibble(0-F) */
/* Input: asc: ASCII Code */
/* Output: asc: Hex Value */
/* return: - */
/******************************************************************************/
EXPORT void asc2nib(char *asc);
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: Function converts a Hex-Code (00-FF) to an BCD (0-255) */
/* Input: hex: Hex Value */
/* return: BCD Value */
/******************************************************************************/
EXPORT int hex2bcd(char hex);
/* ------------------------- UART Funktionen ----------------------------------*/
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: Initialisiert UART1 */
/* Input: Baudrate */
/* return: */
/******************************************************************************/
EXPORT void uart_init(unsigned long baudrate);
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: liest ein Zeichen von UART1 ein */
/* Input: */
/* return: eingelesens Zeichen */
/******************************************************************************/
EXPORT char uart_get_char(void);
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: Ausgabe eines Zeichens auf UART1 */
/* Input: ch: Zeichen in ASCII Code */
/* return: */
/******************************************************************************/
EXPORT void uart_put_char(char ch);
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: Ausgabe eines 8 Bit Hex Wertes als ASCII String auf UART1 */
/* Input: */
/* return: */
/******************************************************************************/
EXPORT void uart_put_hex(char c);
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: Ausgabe eines Strings auf UART1 */
/* Input: string: C- String der aud UART1 ausgegeben werden soll */
/* return: */
/******************************************************************************/
EXPORT void uart_put_string(char *string);
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: sendet ein CLEAR Screen String ("ESC[2J") zu einem VT100 Terminal */
/* Input: */
/* return: */
/******************************************************************************/
EXPORT void uart_clear(void);
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: sendet Positionierungsstring auf VT100 Terminal "ESC[y;xH" */
/* Input: */
/* return: */
/******************************************************************************/
EXPORT void uart_setpos(char x,char y);
/* ------------------------- LCD Funktionen ----------------------------------*/
/*******************************************************************************
* Initialize the LCD controller *
* Parameter: *
* Return: *
*******************************************************************************/
EXPORT void lcd_init (void);
/*******************************************************************************
* Write command to LCD controller *
* Parameter: c: command to be written *
* Return: *
*******************************************************************************/
EXPORT void lcd_write_cmd (unsigned char c);
/*******************************************************************************
* Write data to LCD controller *
* Parameter: c: data to be written *
* Return: *
*******************************************************************************/
EXPORT void lcd_write_data (unsigned char c);
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: Print Character to current cursor position */
/* Input: c: character to be printed */
/* return: */
/******************************************************************************/
EXPORT void lcd_put_char (char c);
/******************************************************************************/
/* U N T E R P R O G R A M M: */
/* */
/* Aufgabe: Ausgabe eines 8 Bit Hex Wertes als ASCII String auf LCD */
/* Input: c: Hex Value to be printed */
/* return: */
/******************************************************************************/
EXPORT void lcd_put_hex(char c);
/*******************************************************************************/
/* Set cursor position on LCD display */
/* Parameter: line: line position (0-3) */
/* column: column position (0-15) */
/* Return: */
/*******************************************************************************/
EXPORT void lcd_set_cursor (int line_nr, int column_nr);
/*******************************************************************************
* Clear the LCD display *
* Parameter: *
* Return: *
*******************************************************************************/
EXPORT void lcd_clear (void);
/*******************************************************************************
* Print sting to LCD display *
* Parameter: string: pointer to output string *
* Return: *
*******************************************************************************/
EXPORT void lcd_put_string (char *string);
/*******************************************************************************
* Print a bargraph to LCD display *
* Parameter: val: value 0..100 % *
* size: size of bargraph 1..16 *
* Return: *
*******************************************************************************/
EXPORT void lcd_bargraph (int value, int size);
/*******************************************************************************
* Display bargraph on LCD display *
* Parameter: pos_y: vertical position of bargraph *
* pos_x: horizontal position of bargraph start *
* value: size of bargraph active field (in pixels) *
* Return: *
*******************************************************************************/
EXPORT void lcd_bargraphXY (int pos_y, int pos_x, int value);
/* ------------------------- ADC Funktionen ----------------------------------*/
/******************************************************************************/
/* U N T E R P R O G R A M M: adc1_convert */
/* */
/* Aufgabe: liefert aktuellen Wert von ADC1 für Kanal channel */
/* */
/* Input: channel to convert */
/* return: converted value (12Bit right aligned) */
/******************************************************************************/
EXPORT unsigned short int adc1_convert(unsigned char channel);
/******************************************************************************/
/* U N T E R P R O G R A M M: ton */
/* */
/* Aufgabe: Wiedergabe eines Ton auf Piezo Summer */
/* */
/* Input: frequenz: Frequenz des Tons in Hz */
/* dauer: Dauer des in ms */
/* return: */
/******************************************************************************/
EXPORT void ton(int frequenz,int dauer_ms);
#undef EXPORT
#endif /* __ARMV10_STD_H */
/******************* (C) HTL - HOLLABRUNN 2009-2010 *****END OF FILE****/

Binary file not shown.

Binary file not shown.