diff options
author | iperry <iperry@749a229e-a60e-11de-b98f-4500b42dc123> | 2009-12-17 02:37:07 +0000 |
---|---|---|
committer | iperry <iperry@749a229e-a60e-11de-b98f-4500b42dc123> | 2009-12-17 02:37:07 +0000 |
commit | 32e57dac2e61e79b029593eb4d34d727bcc10678 (patch) | |
tree | 98d7ff41993576bb150d13d5f63dc744f6812852 /src/wiring/comm | |
download | librambutan-32e57dac2e61e79b029593eb4d34d727bcc10678.tar.gz librambutan-32e57dac2e61e79b029593eb4d34d727bcc10678.zip |
Initial commit of library code, moved from leaftest repo
git-svn-id: https://leaflabs.googlecode.com/svn/trunk/library@69 749a229e-a60e-11de-b98f-4500b42dc123
Diffstat (limited to 'src/wiring/comm')
-rw-r--r-- | src/wiring/comm/Serial.cpp | 67 | ||||
-rw-r--r-- | src/wiring/comm/Serial.h | 20 |
2 files changed, 87 insertions, 0 deletions
diff --git a/src/wiring/comm/Serial.cpp b/src/wiring/comm/Serial.cpp new file mode 100644 index 0000000..3c43436 --- /dev/null +++ b/src/wiring/comm/Serial.cpp @@ -0,0 +1,67 @@ +//#include "stm32f10x_usart.h" +#include "stm32f10x_gpio.h" +#include "stm32f10x_rcc.h" +#include "gpio.h" +#include "Serial.h" +#include "wiring.h" + +int SendChar (int ch) { + /* Write character to Serial Port */ +// USART_SendData(USART2, (unsigned char) ch); +// while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET) +// ; +// +// // while (!(USART2->SR & USART_FLAG_TXE)); +// return (ch); +} + +void uart_send(const char* str) { + while (*str != '\0') { + SendChar(*str); + str++; + } +} + + +Serial::Serial() { +} + +void Serial::write(uint8_t c) { + SendChar(c); +} + +void Serial::begin(uint32_t baud) { + // USART_InitTypeDef USART_InitStructure; + + /* Turn on the clock */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + +#if 0 + /* Configure USART2 Tx as alternate function push-pull */ + GPIO_InitTypeDef GPIO_InitStructure; + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + + /* Configure USART2 Rx as input floating */ + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOA, &GPIO_InitStructure); +#endif + + pinMode(1, GPIO_MODE_AF_OUTPUT_PP); + pinMode(0, GPIO_MODE_INPUT_FLOATING); + + /* Enable USART2 */ +// USART_InitStructure.USART_BaudRate = baud; +// USART_InitStructure.USART_WordLength = USART_WordLength_8b; +// USART_InitStructure.USART_StopBits = USART_StopBits_1; +// USART_InitStructure.USART_Parity = USART_Parity_No ; +// USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; +// USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; +// USART_Init(USART2, &USART_InitStructure); +// USART_Cmd(USART2, ENABLE); +} + +Serial Serial1; diff --git a/src/wiring/comm/Serial.h b/src/wiring/comm/Serial.h new file mode 100644 index 0000000..0e7a126 --- /dev/null +++ b/src/wiring/comm/Serial.h @@ -0,0 +1,20 @@ +#ifndef _SERIAL_H_ +#define _SERIAL_H_ + +#include <inttypes.h> +#include <Print.h> + +class Serial : public Print { + public: + Serial(); + void begin(uint32_t); + uint8_t available(void); + int read(void); + void flush(void); + virtual void write(uint8_t); + using Print::write; +}; + +extern Serial Serial1; +#endif + |