Files

146 lines
3.8 KiB
C
Raw Permalink Normal View History

/*
******************************************************************************
* @file apt32f102.c
* @author APT AE Team
* @version V1.01
* @date 2019/04/05
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
/**
* @addtogroup Struct pointer assignment Functions
* @{
*/
CSP_CK801_T *CK801 = (CSP_CK801_T *)CK801_BASEADDR ;
CSP_IFC_T *IFC = (CSP_IFC_T *)APB_IFCBase ;
CSP_SYSCON_T *SYSCON = (CSP_SYSCON_T *)APB_SYSCONBase ;
CSP_TKEY_T *TKEY = (CSP_TKEY_T *)APB_TKEYBase ;
CSP_TKEYBUF_T *TKEYBUF = (CSP_TKEYBUF_T *)APB_TKEYBUFBase;
CSP_ADC12_T *ADC0 = (CSP_ADC12_T *)APB_ADC0Base ;
CSP_GPIO_T *GPIOA0 = (CSP_GPIO_T *)APB_GPIOA0Base ; // A0
CSP_GPIO_T *GPIOB0 = (CSP_GPIO_T *)APB_GPIOB0Base ; // B0
CSP_IGRP_T *GPIOGRP = (CSP_IGRP_T *)APB_IGRPBase;
CSP_UART_T *UART0 = (CSP_UART_T *)APB_UART0Base ;
CSP_UART_T *UART1 = (CSP_UART_T *)APB_UART1Base ;
CSP_UART_T *UART2 = (CSP_UART_T *)APB_UART2Base ;
CSP_SSP_T *SPI0 = (CSP_SSP_T *)APB_SPI0Base ;
CSP_I2C_T *I2C0 = (CSP_I2C_T *)APB_I2C0Base ;
CSP_SIO_T *SIO0 = (CSP_SIO_T *)APB_SIO0Base ;
CSP_CA_T *CA0 = (CSP_CA_T *)APB_CNTABase ;
CSP_GPT_T *GPT0 = (CSP_GPT_T *)APB_GPT0Base;
CSP_EPT_T *EPT0 = (CSP_EPT_T *)APB_EPT0Base ;
CSP_ETCB_T *ETCB = (CSP_ETCB_T *)APB_ETCBBase ;
CSP_RTC_T *RTC = (CSP_RTC_T *)APB_RTCBase ;
CSP_LPT_T *LPT = (CSP_LPT_T *)APB_LPTBase ;
CSP_WWDT_T *WWDT = (CSP_WWDT_T *)APB_WWDTBase ;
CSP_BT_T *BT0 = (CSP_BT_T *)APB_BT0Base ;
CSP_BT_T *BT1 = (CSP_BT_T *)APB_BT1Base ;
CSP_CRC_T *CRC = (CSP_CRC_T *)AHB_CRCBase ;
CSP_HWD_T *HWD = (CSP_HWD_T *)APB_HWDBase ;
int __divsi3 ( int a, int b)
{
int PSR;
__asm volatile(
"mfcr %0 , psr \n\r"
"psrclr ie \n\r"
: "=r"(PSR)
);
HWD->CR = 0;
HWD->DIVIDENT = a;
HWD->DIVISOR = b;
PSR |= 0x80000000;
__asm volatile(
"mtcr %0 , psr \n\r"
:
:"r"(PSR)
);
return HWD->QUOTIENT;
}
unsigned int __udivsi3 ( unsigned int a, unsigned int b)
{
int PSR;
__asm volatile(
"mfcr %0 , psr \n\r"
"psrclr ie \n\r"
: "=r"(PSR)
);
HWD->CR = 1;
HWD->DIVIDENT = a;
HWD->DIVISOR = b;
PSR |= 0x80000000;
__asm volatile(
"mtcr %0 , psr \n\r"
:
:"r"(PSR)
);
return HWD->QUOTIENT;
}
int __modsi3 ( int a, int b)
{
int PSR;
__asm volatile(
"mfcr %0 , psr \n\r"
"psrclr ie \n\r"
: "=r"(PSR)
);
HWD->CR = 0;
HWD->DIVIDENT = a;
HWD->DIVISOR = b;
PSR |= 0x80000000;
__asm volatile(
"mtcr %0 , psr \n\r"
:
:"r"(PSR)
);
return HWD->REMAIN;
}
unsigned int __umodsi3 ( unsigned int a, unsigned int b)
{
int PSR;
__asm volatile(
"mfcr %0 , psr \n\r"
"psrclr ie \n\r"
: "=r"(PSR)
);
HWD->CR = 1;
HWD->DIVIDENT = a;
HWD->DIVISOR = b;
PSR |= 0x80000000;
__asm volatile(
"mtcr %0 , psr \n\r"
:
:"r"(PSR)
);
return HWD->REMAIN;
}
/******************* (C) COPYRIGHT 2019 APT Chip *****END OF FILE****/