亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? core_cm0.c

?? LPC1114_例程和教程
?? C
字號:
/******************************************************************************
 * @file:    core_cm0.c
 * @purpose: CMSIS Cortex-M0 Core Peripheral Access Layer Source File
 * @version: V1.0
 * @date:    12. Nov. 2008
 *----------------------------------------------------------------------------
 *
 * Copyright (C) 2008 ARM Limited. All rights reserved.
 *
 * ARM Limited (ARM) is supplying this software for use with Cortex-M0
 * processor based microcontrollers.  This file can be freely distributed
 * within development tools that are supporting such ARM based processors.
 *
 * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
 * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
 * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 *
 ******************************************************************************/



#include <stdint.h>


/* define compiler specific symbols */
#if defined ( __CC_ARM   )
  #define __ASM            __asm           /*!< asm keyword for armcc          */
  #define __INLINE         __inline        /*!< inline keyword for armcc        */

#elif defined ( __ICCARM__ )
  #define __ASM           __asm            /*!< asm keyword for iarcc           */
  #define __INLINE        inline           /*!< inline keyword for iarcc. Only avaiable in High optimization mode! */
  #define __nop           __no_operation   /*!< no operation intrinsic in iarcc */

#elif defined   (  __GNUC__  )
  #define __ASM             asm            /*!< asm keyword for gcc            */
  #define __INLINE          inline         /*!< inline keyword for gcc         */
#endif





#if (defined (__ARMCC_VERSION)) && (__ARMCC_VERSION < 400000)


/**
 * @brief  Return the Process Stack Pointer
 *
 * @param  none
 * @return uint32_t ProcessStackPointer
 *
 * Return the actual process stack pointer
 */
__ASM uint32_t __get_PSP(void)
{
  mrs r0, psp
  bx lr
}


/**
 * @brief  Set the Process Stack Pointer
 *
 * @param  uint32_t Process Stack Pointer
 * @return none
 *
 * Assign the value ProcessStackPointer to the MSP
 * (process stack pointer) Cortex processor register
 */
__ASM void __set_PSP(uint32_t topOfProcStack)
{
  msr psp, r0
  bx lr
}


/**
 * @brief  Return the Main Stack Pointer
 *
 * @param  none
 * @return uint32_t Main Stack Pointer
 *
 * Return the current value of the MSP (main stack pointer)
 * Cortex processor register
 */
__ASM uint32_t __get_MSP(void)
{
  mrs r0, msp
  bx lr
}


/**
 * @brief  Set the Main Stack Pointer
 *
 * @param  uint32_t Main Stack Pointer
 * @return none
 *
 * Assign the value mainStackPointer to the MSP
 * (main stack pointer) Cortex processor register
 */
__ASM void __set_MSP(uint32_t mainStackPointer)
{
  msr msp, r0
  bx lr
}


/**
 * @brief  Return the Base Priority value
 *
 * @param  none
 * @return uint32_t BasePriority
 *
 * Return the content of the base priority register
 */
__ASM uint32_t  __get_BASEPRI(void)
{
  mrs r0, basepri
  bx lr
}


/**
 * @brief  Set the Base Priority value
 *
 * @param  uint32_t BasePriority
 * @return none
 *
 * Set the base priority register
 */
__ASM void __set_BASEPRI(uint32_t basePri)
{
  msr basepri, r0
  bx lr
}


/**
 * @brief  Return the Priority Mask value
 *
 * @param  none
 * @return uint32_t PriMask
 *
 * Return the state of the priority mask bit from the priority mask
 * register
 */
__ASM uint32_t __get_PRIMASK(void)
{
  mrs r0, primask
  bx lr
}


/**
 * @brief  Set the Priority Mask value
 *
 * @param  uint32_t PriMask
 * @return none
 *
 * Set the priority mask bit in the priority mask register
 */
__ASM void __set_PRIMASK(uint32_t priMask)
{
  msr primask, r0
  bx lr
}


/**
 * @brief  Return the Fault Mask value
 *
 * @param  none
 * @return uint32_t FaultMask
 *
 * Return the content of the fault mask register
 */
__ASM uint32_t  __get_FAULTMASK(void)
{
  mrs r0, faultmask
  bx lr
}


/**
 * @brief  Set the Fault Mask value
 *
 * @param  uint32_t faultMask value
 * @return none
 *
 * Set the fault mask register
 */
__ASM void __set_FAULTMASK(uint32_t faultMask)
{
  msr faultmask, r0
  bx lr
}


/**
 * @brief  Return the Control Register value
*
*  @param  none
*  @return uint32_t Control value
 *
 * Return the content of the control register
 */
__ASM uint32_t  __get_CONTROL(void)
{
  mrs r0, control
  bx lr
}

/**
 * @brief  Set the Control Register value
 *
 * @param  uint32_t Control value
 * @return none
 *
 * Set the control register
 */
__ASM void __set_CONTROL(uint32_t control)
{
  msr control, r0
  bx lr
}


/**
 * @brief  Reverse byte order in unsigned short value
 *
 * @param  uint16_t value to reverse
 * @return uint32_t reversed value
 *
 * Reverse byte order in unsigned short value
 */
__ASM uint32_t __REV16(uint16_t value)
{
  rev16 r0, r0
  bx lr
}


/**
 * @brief  Reverse byte order in signed short value with sign extension to integer
 *
 * @param  int16_t value to reverse
 * @return int32_t reversed value
 *
 * Reverse byte order in signed short value with sign extension to integer
 */
__ASM int32_t __REVSH(int16_t value)
{
  revsh r0, r0
  bx lr
}



#elif (defined (__ICCARM__))

#pragma diag_suppress=Pe940

/**
 * @brief  Return the Process Stack Pointer
 *
 * @param  none
 * @return uint32_t ProcessStackPointer
 *
 * Return the actual process stack pointer
 */
uint32_t __get_PSP(void)
{
  __ASM("mrs r0, psp");
  __ASM("bx lr");
}

/**
 * @brief  Set the Process Stack Pointer
 *
 * @param  uint32_t Process Stack Pointer
 * @return none
 *
 * Assign the value ProcessStackPointer to the MSP
 * (process stack pointer) Cortex processor register
 */
void __set_PSP(uint32_t topOfProcStack)
{
  __ASM("msr psp, r0");
  __ASM("bx lr");
}

/**
 * @brief  Return the Main Stack Pointer
 *
 * @param  none
 * @return uint32_t Main Stack Pointer
 *
 * Return the current value of the MSP (main stack pointer)
 * Cortex processor register
 */
uint32_t __get_MSP(void)
{
  __ASM("mrs r0, msp");
  __ASM("bx lr");
}

/**
 * @brief  Set the Main Stack Pointer
 *
 * @param  uint32_t Main Stack Pointer
 * @return none
 *
 * Assign the value mainStackPointer to the MSP
 * (main stack pointer) Cortex processor register
 */
void __set_MSP(uint32_t topOfMainStack)
{
  __ASM("msr msp, r0");
  __ASM("bx lr");
}


/**
 * @brief  Reverse byte order in unsigned short value
 *
 * @param  uint16_t value to reverse
 * @return uint32_t reversed value
 *
 * Reverse byte order in unsigned short value
 */
uint32_t __REV16(uint16_t value)
{
  __ASM("rev16 r0, r0");
  __ASM("bx lr");
}

#pragma diag_default=Pe940


#elif (defined (__GNUC__))

/**
 * @brief  Return the Control Register value
*
*  @param  none
*  @return uint32_t Control value
 *
 * Return the content of the control register
 */
uint32_t __get_CONTROL(void)
{
  uint32_t result=0;
  __ASM volatile ("MRS %0, control" : "=r" (result) );
  return(result);
}

/**
 * @brief  Set the Control Register value
 *
 * @param  uint32_t Control value
 * @return none
 *
 * Set the control register
 */
void __set_CONTROL(uint32_t control)
{
  __ASM volatile ("MSR control, %0" : : "r" (control) );
}

/**
 * @brief  Return the Process Stack Pointer
 *
 * @param  none
 * @return uint32_t ProcessStackPointer
 *
 * Return the actual process stack pointer
 */
uint32_t __get_PSP(void)
{
  uint32_t result=0;

  __ASM volatile ("MRS %0, psp" : "=r" (result) );
  return(result);
}

/**
 * @brief  Set the Process Stack Pointer
 *
 * @param  uint32_t Process Stack Pointer
 * @return none
 *
 * Assign the value ProcessStackPointer to the MSP
 * (process stack pointer) Cortex processor register
 */
void __set_PSP(uint32_t topOfProcStack)
{
  __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) );
}

/**
 * @brief  Return the Main Stack Pointer
 *
 * @param  none
 * @return uint32_t Main Stack Pointer
 *
 * Return the current value of the MSP (main stack pointer)
 * Cortex processor register
 */
uint32_t __get_MSP(void)
{
  uint32_t result=0;

  __ASM volatile ("MRS %0, msp" : "=r" (result) );
  return(result);
}

/**
 * @brief  Set the Main Stack Pointer
 *
 * @param  uint32_t Main Stack Pointer
 * @return none
 *
 * Assign the value mainStackPointer to the MSP
 * (main stack pointer) Cortex processor register
 */
void __set_MSP(uint32_t topOfMainStack)
{
  __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) );
}

/**
 * @brief  Return the Base Priority value
 *
 * @param  none
 * @return uint32_t BasePriority
 *
 * Return the content of the base priority register
 */
uint32_t __get_BASEPRI(void)
{
  uint32_t result=0;

  __ASM volatile ("MRS %0, basepri_max" : "=r" (result) );
  return(result);
}

/**
 * @brief  Set the Base Priority value
 *
 * @param  uint32_t BasePriority
 * @return none
 *
 * Set the base priority register
 */
void __set_BASEPRI(uint32_t value)
{
  __ASM volatile ("MSR basepri, %0" : : "r" (value) );
}

/**
 * @brief  Return the Priority Mask value
 *
 * @param  none
 * @return uint32_t PriMask
 *
 * Return the state of the priority mask bit from the priority mask
 * register
 */
uint32_t __get_PRIMASK(void)
{
  uint32_t result=0;

  __ASM volatile ("MRS %0, primask" : "=r" (result) );
  return(result);
}

/**
 * @brief  Set the Priority Mask value
 *
 * @param  uint32_t PriMask
 * @return none
 *
 * Set the priority mask bit in the priority mask register
 */
void __set_PRIMASK(uint32_t priMask)
{
  __ASM volatile ("MSR primask, %0" : : "r" (priMask) );
}

/**
 * @brief  Return the Fault Mask value
 *
 * @param  none
 * @return uint32_t FaultMask
 *
 * Return the content of the fault mask register
 */
uint32_t __get_FAULTMASK(void)
{
  uint32_t result=0;

  __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
  return(result);
}

/**
 * @brief  Set the Fault Mask value
 *
 * @param  uint32_t faultMask value
 * @return none
 *
 * Set the fault mask register
 */
void __set_FAULTMASK(uint32_t faultMask)
{
  __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) );
}

/**
 * @brief  Reverse byte order in integer value
 *
 * @param  uint32_t value to reverse
 * @return uint32_t reversed value
 *
 * Reverse byte order in integer value
 */
uint32_t __REV(uint32_t value)
{
  uint32_t result=0;

   __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) );
   return(result);
}

/**
 * @brief  Reverse byte order in unsigned short value
 *
 * @param  uint16_t value to reverse
 * @return uint32_t reversed value
 *
 * Reverse byte order in unsigned short value
 */
uint32_t __REV16(uint16_t value)
{
  uint32_t result=0;

   __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) );
   return(result);
}


/**
 * @brief  Reverse byte order in signed short value with sign extension to integer
 *
 * @param  int32_t value to reverse
 * @return int32_t reversed value
 *
 * Reverse byte order in signed short value with sign extension to integer
 */
int32_t __REVSH(int16_t value)
{
  uint32_t result=0;

   __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) );
   return(result);
}


/**
 * @brief  Reverse bit order of value
 *
 * @param  uint32_t value to reverse
 * @return uint32_t reversed value
 *
 * Reverse bit order of value
 */
uint32_t __RBIT(uint32_t value)
{
  uint32_t result=0;

   __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
   return(result);
}


/**
 * @brief  LDR Exclusive
 *
 * @param  uint8_t* address
 * @return uint8_t value of (*address)
 *
 * Exclusive LDR command
 */
uint8_t __LDREXB(uint8_t *addr)
{
    uint8_t result=0;

   __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) );
   return(result);
}

/**
 * @brief  LDR Exclusive
 *
 * @param  uint16_t* address
 * @return uint16_t value of (*address)
 *
 * Exclusive LDR command
 */
uint16_t __LDREXH(uint16_t *addr)
{
    uint16_t result=0;

   __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) );
   return(result);
}


/**
 * @brief  LDR Exclusive
 *
 * @param  uint32_t* address
 * @return uint32_t value of (*address)
 *
 * Exclusive LDR command
 */
uint32_t __LDREXW(uint32_t *addr)
{
    uint32_t result=0;

   __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) );
   return(result);
}


/**
 * @brief  STR Exclusive
 *
 * @param  uint8_t *address
 * @param  uint8_t value to store
 * @return uint32_t successful / failed
 *
 * Exclusive STR command
 */
uint32_t __STREXB(uint8_t value, uint8_t *addr)
{
   uint32_t result=0;

   __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
   return(result);
}


/**
 * @brief  STR Exclusive
 *
 * @param  uint16_t *address
 * @param  uint16_t value to store
 * @return uint32_t successful / failed
 *
 * Exclusive STR command
 */
uint32_t __STREXH(uint16_t value, uint16_t *addr)
{
   uint32_t result=0;

   __ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
   return(result);
}


/**
 * @brief  STR Exclusive
 *
 * @param  uint32_t *address
 * @param  uint32_t value to store
 * @return uint32_t successful / failed
 *
 * Exclusive STR command
 */
uint32_t __STREXW(uint32_t value, uint32_t *addr)
{
   uint32_t result=0;

   __ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
   return(result);
}




#endif

















?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆传媒一区二区三区| 中文字幕成人av| 午夜精品在线视频一区| 欧美性受xxxx黑人xyx| 亚洲成va人在线观看| 欧美乱熟臀69xxxxxx| 久草热8精品视频在线观看| 精品国产乱码久久久久久闺蜜| 精品一区精品二区高清| 久久婷婷成人综合色| 成人黄色一级视频| 综合久久久久综合| 欧美裸体一区二区三区| 久久国产精品99久久人人澡| 国产精品视频你懂的| 一本到不卡精品视频在线观看| 亚洲影院久久精品| 欧美大度的电影原声| 成人中文字幕电影| 一区二区三区 在线观看视频| 在线播放欧美女士性生活| 国产自产2019最新不卡| 亚洲精品国久久99热| 欧美男生操女生| 粉嫩欧美一区二区三区高清影视| 一区二区三区在线播| 精品国产乱码久久久久久久久| 91视频在线观看免费| 日韩电影在线观看电影| 日本一区二区三区四区在线视频| 欧美中文字幕不卡| 国产91丝袜在线播放0| 性久久久久久久久| 国产精品青草久久| 欧美一区二区三区男人的天堂| 风间由美一区二区av101 | 久久久精品免费免费| 色拍拍在线精品视频8848| 久久99精品久久久| 亚洲一区二区三区不卡国产欧美| 久久青草国产手机看片福利盒子| 欧美三片在线视频观看| 精品亚洲国产成人av制服丝袜| 国产精品久久影院| 欧美精品一区二区三区久久久| 在线精品视频免费观看| 成人永久aaa| 久久99久久精品| 午夜欧美2019年伦理| 亚洲人亚洲人成电影网站色| 久久精品一级爱片| 欧美一级黄色录像| 欧美日韩一区二区三区在线| av激情成人网| 国产成人免费网站| 狠狠狠色丁香婷婷综合久久五月| 亚洲aⅴ怡春院| 亚洲精品国产一区二区精华液 | 久久精品人人爽人人爽| 91精品国产乱码| 欧美揉bbbbb揉bbbbb| 91亚洲精品一区二区乱码| 国产激情精品久久久第一区二区| 美女脱光内衣内裤视频久久网站| 亚洲自拍偷拍欧美| 亚洲视频精选在线| 亚洲人精品一区| 亚洲视频一区在线| 国产精品午夜春色av| 国产色91在线| 国产欧美综合在线| 国产精品视频yy9299一区| 国产亚洲欧美日韩日本| 久久久亚洲精品一区二区三区| 日韩女优av电影| 久久亚洲一区二区三区四区| 精品少妇一区二区三区在线视频| 日韩视频一区二区在线观看| 欧美一级一区二区| 日韩免费高清av| 日韩美女视频一区二区在线观看| 欧美电影免费观看高清完整版| 日韩视频国产视频| 精品乱人伦小说| 亚洲国产电影在线观看| 中文字幕亚洲在| 一区二区三区在线观看国产| 午夜久久久影院| 久久激情五月婷婷| 国产成人在线看| 色域天天综合网| 欧美亚洲国产一区二区三区| 欧美人与z0zoxxxx视频| 日韩欧美在线影院| 国产亚洲精品免费| 1000部国产精品成人观看| 亚洲一二三四区| 蜜桃久久久久久久| 粉嫩av亚洲一区二区图片| 91女人视频在线观看| 欧美午夜理伦三级在线观看| 4438x亚洲最大成人网| 2017欧美狠狠色| 日韩美女久久久| 日本成人超碰在线观看| 国产乱淫av一区二区三区| 99久久er热在这里只有精品66| 欧洲亚洲国产日韩| 精品av久久707| 精品一区二区在线视频| 国产.精品.日韩.另类.中文.在线.播放| 成人av电影观看| 欧美高清视频在线高清观看mv色露露十八| 91精品黄色片免费大全| 欧美激情一区二区三区蜜桃视频 | 欧美曰成人黄网| 日韩免费高清视频| 亚洲精品视频一区二区| 久久精品国产澳门| 99精品欧美一区二区蜜桃免费| 欧美一区欧美二区| 国产精品丝袜一区| 另类欧美日韩国产在线| 91免费国产在线| 欧美精品一区视频| 一区二区三区四区亚洲| 国产精品中文欧美| 欧美日本韩国一区| 亚洲视频精选在线| 国产剧情一区在线| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲妇女屁股眼交7| 国产精品1024| 69堂国产成人免费视频| 中文字幕一区二区三区在线播放| 丝袜国产日韩另类美女| 99国产欧美久久久精品| 久久综合狠狠综合久久综合88| 亚洲成人精品在线观看| caoporn国产精品| 欧美精品一区二区久久婷婷| 午夜欧美2019年伦理| 色婷婷av久久久久久久| 国产欧美一区二区在线观看| 麻豆精品一区二区三区| 欧美综合久久久| 亚洲欧美日韩在线不卡| 国产v综合v亚洲欧| 精品国产免费人成电影在线观看四季 | 一本大道久久a久久综合婷婷| 久久综合色8888| 麻豆91在线观看| 777亚洲妇女| 午夜国产精品影院在线观看| 91麻豆免费观看| 日韩久久一区二区| 成人av在线网| 国产精品日产欧美久久久久| 国产精品综合久久| 久久综合久久综合亚洲| 韩国女主播一区二区三区| 日韩欧美黄色影院| 蜜桃免费网站一区二区三区| 日韩一区二区在线播放| 日韩黄色免费网站| 在线成人免费视频| 日本亚洲电影天堂| 日韩手机在线导航| 久久成人免费网站| 久久天天做天天爱综合色| 国产一区二区三区在线观看免费| 欧美成人一区二区| 麻豆国产欧美日韩综合精品二区| 日韩丝袜情趣美女图片| 国产在线不卡视频| 亚洲chinese男男1069| 欧美欧美午夜aⅴ在线观看| 日韩在线一区二区三区| 91精品国产综合久久久久久久 | 国产精一品亚洲二区在线视频| 2020日本不卡一区二区视频| 风流少妇一区二区| 一区二区三区资源| 777色狠狠一区二区三区| 另类小说视频一区二区| 久久精品日产第一区二区三区高清版| 不卡一区在线观看| 亚洲综合清纯丝袜自拍| 91精品免费观看| 国产福利一区在线观看| 中文字幕在线观看一区| 欧美午夜一区二区三区免费大片| 午夜免费欧美电影| 国产亚洲精品福利| 欧美在线小视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲精品一区二区三区蜜桃下载 | 国产成人精品免费| 亚洲美女视频一区| 欧美一区二区成人|