
1. sample project, see TencentOS-tiny\board\STM8L052R8T6\IAR\shell 2. ATTENTION: read TencentOS-tiny\board\STM8L052R8T6\IAR\shell\README.md first
476 lines
13 KiB
C
476 lines
13 KiB
C
/**
|
|
******************************************************************************
|
|
* @file USART/USART_HyperTerminal_Interrupts/stm8l15x_it.c
|
|
* @author MCD Application Team
|
|
* @version V1.5.2
|
|
* @date 30-September-2014
|
|
* @brief Main Interrupt Service Routines.
|
|
* This file provides template for all peripherals interrupt service routine.
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* <h2><center>© COPYRIGHT 2014 STMicroelectronics</center></h2>
|
|
*
|
|
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
|
|
* You may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at:
|
|
*
|
|
* http://www.st.com/software_license_agreement_liberty_v2
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "stm8l15x_it.h"
|
|
|
|
#include "stm8l15x_usart.h"
|
|
|
|
#include "tos_k.h"
|
|
#include "tos_shell.h"
|
|
|
|
/* Private typedef -----------------------------------------------------------*/
|
|
/* Private define ------------------------------------------------------------*/
|
|
#define TX_BUFFER_SIZE (countof(TxBuffer) - 1)
|
|
|
|
/* Private macro -------------------------------------------------------------*/
|
|
#define countof(a) (sizeof(a) / sizeof(*(a)))
|
|
|
|
/* Private variables ---------------------------------------------------------*/
|
|
uint8_t TxBuffer[] = "\n\rUSART Example: USART-Hyperterminal communication using Interrupt\nEnter your Text\n\r";
|
|
uint8_t TxCounter = 0;
|
|
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
/* Private functions ---------------------------------------------------------*/
|
|
|
|
#ifdef _COSMIC_
|
|
/**
|
|
* @brief Dummy interrupt routine
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(NonHandledInterrupt, 0)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
#endif
|
|
|
|
/**
|
|
* @brief TRAP interrupt routine
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER_TRAP(TRAP_IRQHandler)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
/**
|
|
* @brief FLASH Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(FLASH_IRQHandler, 1)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
/**
|
|
* @brief DMA1 channel0 and channel1 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(DMA1_CHANNEL0_1_IRQHandler, 2)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
/**
|
|
* @brief DMA1 channel2 and channel3 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(DMA1_CHANNEL2_3_IRQHandler, 3)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
/**
|
|
* @brief RTC / CSS_LSE Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(RTC_CSSLSE_IRQHandler, 4)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
/**
|
|
* @brief External IT PORTE/F and PVD Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(EXTIE_F_PVD_IRQHandler, 5)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief External IT PORTB / PORTG Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(EXTIB_G_IRQHandler, 6)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief External IT PORTD /PORTH Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(EXTID_H_IRQHandler, 7)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief External IT PIN0 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(EXTI0_IRQHandler, 8)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief External IT PIN1 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(EXTI1_IRQHandler, 9)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief External IT PIN2 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(EXTI2_IRQHandler, 10)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief External IT PIN3 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(EXTI3_IRQHandler, 11)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief External IT PIN4 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(EXTI4_IRQHandler, 12)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief External IT PIN5 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(EXTI5_IRQHandler, 13)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief External IT PIN6 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(EXTI6_IRQHandler, 14)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief External IT PIN7 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(EXTI7_IRQHandler, 15)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
/**
|
|
* @brief LCD /AES Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(LCD_AES_IRQHandler, 16)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
/**
|
|
* @brief CLK switch/CSS/TIM1 break Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(SWITCH_CSS_BREAK_DAC_IRQHandler, 17)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief ADC1/Comparator Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(ADC1_COMP_IRQHandler, 18)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief TIM2 Update/Overflow/Trigger/Break /USART2 TX Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_USART2_TX_IRQHandler, 19)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
|
|
TIM2_ClearITPendingBit(TIM2_IT_Update);
|
|
|
|
if (tos_knl_is_running()) {
|
|
tos_knl_irq_enter();
|
|
tos_tick_handler();
|
|
tos_knl_irq_leave();
|
|
}
|
|
|
|
#ifdef USE_STM8L1528_EVAL
|
|
/* Write one byte to the transmit data register */
|
|
USART_SendData8(EVAL_COM1, TxBuffer[TxCounter++]);
|
|
USART_ClearITPendingBit(EVAL_COM1, USART_IT_TC);
|
|
|
|
if (TxCounter == TX_BUFFER_SIZE)
|
|
{
|
|
/* Disable the USART Transmit Complete interrupt */
|
|
USART_ITConfig(EVAL_COM1, USART_IT_TC, DISABLE);
|
|
}
|
|
#endif /* USE_STM8L1528_EVAL */
|
|
}
|
|
|
|
/**
|
|
* @brief Timer2 Capture/Compare / USART2 RX Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(TIM2_CC_USART2_RX_IRQHandler, 20)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
#ifdef USE_STM8L1528_EVAL
|
|
uint8_t temp;
|
|
|
|
/* Read one byte from the receive data register and send it back */
|
|
temp = (USART_ReceiveData8(EVAL_COM1) & 0x7F);
|
|
USART_SendData8(EVAL_COM1, temp);
|
|
#endif /* USE_STM8L1528_EVAL */
|
|
}
|
|
|
|
|
|
/**
|
|
* @brief Timer3 Update/Overflow/Trigger/Break Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(TIM3_UPD_OVF_TRG_BRK_USART3_TX_IRQHandler, 21)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
/**
|
|
* @brief Timer3 Capture/Compare /USART3 RX Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(TIM3_CC_USART3_RX_IRQHandler, 22)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
/**
|
|
* @brief TIM1 Update/Overflow/Trigger/Commutation Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_COM_IRQHandler, 23)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
/**
|
|
* @brief TIM1 Capture/Compare Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(TIM1_CC_IRQHandler, 24)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief TIM4 Update/Overflow/Trigger Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(TIM4_UPD_OVF_TRG_IRQHandler, 25)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
/**
|
|
* @brief SPI1 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(SPI1_IRQHandler, 26)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* @brief USART1 TX / TIM5 Update/Overflow/Trigger/Break Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(USART1_TX_TIM5_UPD_OVF_TRG_BRK_IRQHandler, 27)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
#ifdef USE_STM8L1526_EVAL
|
|
/* Write one byte to the transmit data register */
|
|
USART_SendData8(EVAL_COM1, TxBuffer[TxCounter++]);
|
|
USART_ClearITPendingBit(EVAL_COM1, USART_IT_TC);
|
|
|
|
if (TxCounter == TX_BUFFER_SIZE)
|
|
{
|
|
/* Disable the USART Transmit Complete interrupt */
|
|
USART_ITConfig(EVAL_COM1, USART_IT_TC, DISABLE);
|
|
}
|
|
#endif /* USE_STM8L1526_EVAL */
|
|
}
|
|
|
|
/**
|
|
* @brief USART1 RX / Timer5 Capture/Compare Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler, 28)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
|
|
uint8_t data;
|
|
|
|
tos_knl_irq_enter();
|
|
|
|
if (USART_GetITStatus(USART1, USART_IT_RXNE)) {
|
|
data = USART_ReceiveData8(USART1);
|
|
tos_shell_input_byte(data);
|
|
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
|
|
}
|
|
|
|
tos_knl_irq_leave();
|
|
|
|
#ifdef USE_STM8L1526_EVAL
|
|
uint8_t temp;
|
|
|
|
/* Read one byte from the receive data register and send it back */
|
|
temp = (USART_ReceiveData8(EVAL_COM1) & 0x7F);
|
|
USART_SendData8(EVAL_COM1, temp);
|
|
#endif /* USE_STM8L1526_EVAL */
|
|
}
|
|
|
|
/**
|
|
* @brief I2C1 / SPI2 Interrupt routine.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
INTERRUPT_HANDLER(I2C1_SPI2_IRQHandler, 29)
|
|
{
|
|
/* In order to detect unexpected events during development,
|
|
it is recommended to set a breakpoint on the following instruction.
|
|
*/
|
|
}
|
|
|
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
|
|
|
|
|