Delayed LED control using bools to save input values
Fork of MODSERIAL by
Revision 41:d8422efe4761, committed 2015-11-17
- Comitter:
- Gary Servin
- Date:
- Tue Nov 17 12:11:44 2015 -0300
- Parent:
- 40:6ffa97119f4f
- Child:
- 42:4737f8a5b018
- Commit message:
- Add Support for Inforce's mbed PAC shield (based on the STM32F401RB)
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Device/MODSERIAL_PAC_F401RB.cpp Tue Nov 17 12:11:44 2015 -0300 @@ -0,0 +1,20 @@ +#ifdef TARGET_PAC_F401RB +#include "MODSERIAL.h" + +void MODSERIAL::setBase(void ) { +switch( _serial.index ) { + case 0: _base = USART1; _IRQ = USART1_IRQn; break; + case 1: _base = USART2; _IRQ = USART2_IRQn; break; + case 2: _base = USART6; _IRQ = USART6_IRQn; break; + default: _base = NULL; _IRQ = (IRQn_Type)NULL; break; + } +} + +void MODSERIAL::initDevice(void) {}; + +bool MODSERIAL::txIsBusy( void ) +{ + return ( (((USART_TypeDef*)_base)->SR & ( 1UL << 6 )) == 0 ) ? true : false; +} + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Device/MODSERIAL_PAC_F401RB.h Tue Nov 17 12:11:44 2015 -0300 @@ -0,0 +1,20 @@ +#if defined(TARGET_PAC_F401RB) + +#define MODSERIAL_IRQ_REG ((USART_TypeDef*)_base)->CR1 +#define DISABLE_TX_IRQ MODSERIAL_IRQ_REG &= ~USART_CR1_TXEIE +#define DISABLE_RX_IRQ MODSERIAL_IRQ_REG &= ~USART_CR1_RXNEIE +#define ENABLE_TX_IRQ MODSERIAL_IRQ_REG |= USART_CR1_TXEIE +#define ENABLE_RX_IRQ MODSERIAL_IRQ_REG |= USART_CR1_RXNEIE + +#define MODSERIAL_READ_REG ((USART_TypeDef*)_base)->DR +#define MODSERIAL_WRITE_REG ((USART_TypeDef*)_base)->DR +#define MODSERIAL_READABLE ((((USART_TypeDef*)_base)->SR & USART_SR_RXNE) != 0) +#define MODSERIAL_WRITABLE ((((USART_TypeDef*)_base)->SR & USART_SR_TXE) != 0) + +#define RESET_TX_FIFO while(0 == 1) +#define RESET_RX_FIFO while(MODSERIAL_READABLE) char dummy = MODSERIAL_READ_REG + +#define RX_IRQ_ENABLED ((MODSERIAL_IRQ_REG & USART_CR1_RXNEIE) != 0) +#define TX_IRQ_ENABLED ((MODSERIAL_IRQ_REG & USART_CR1_TXEIE) != 0) + +#endif
--- a/MACROS.h Sun Sep 20 02:56:47 2015 +0000 +++ b/MACROS.h Tue Nov 17 12:11:44 2015 -0300 @@ -1,38 +1,39 @@ -/* - Copyright (c) 2010 Andy Kirkham - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#ifndef MODSERIAL_MACROS_H -#define MODSERIAL_MACROS_H - -#include "MODSERIAL_LPC1768.h" -#include "MODSERIAL_LPC11U24.h" -#include "MODSERIAL_KL25Z.h" -#include "MODSERIAL_KL05Z.h" -#include "MODSERIAL_KSDK.h" -#include "MODSERIAL_NUCLEO_F401RE.h" - -#define MODSERIAL_TX_BUFFER_EMPTY (buffer_count[TxIrq]==0) -#define MODSERIAL_RX_BUFFER_EMPTY (buffer_count[RxIrq]==0) -#define MODSERIAL_TX_BUFFER_FULL (buffer_count[TxIrq]==buffer_size[TxIrq]) -#define MODSERIAL_RX_BUFFER_FULL (buffer_count[RxIrq]==buffer_size[RxIrq]) - -#endif \ No newline at end of file +/* + Copyright (c) 2010 Andy Kirkham + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#ifndef MODSERIAL_MACROS_H +#define MODSERIAL_MACROS_H + +#include "MODSERIAL_LPC1768.h" +#include "MODSERIAL_LPC11U24.h" +#include "MODSERIAL_KL25Z.h" +#include "MODSERIAL_KL05Z.h" +#include "MODSERIAL_KSDK.h" +#include "MODSERIAL_NUCLEO_F401RE.h" +#include "MODSERIAL_PAC_F401RB.h" + +#define MODSERIAL_TX_BUFFER_EMPTY (buffer_count[TxIrq]==0) +#define MODSERIAL_RX_BUFFER_EMPTY (buffer_count[RxIrq]==0) +#define MODSERIAL_TX_BUFFER_FULL (buffer_count[TxIrq]==buffer_size[TxIrq]) +#define MODSERIAL_RX_BUFFER_FULL (buffer_count[RxIrq]==buffer_size[RxIrq]) + +#endif