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

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

?? core_cm3.c

?? 學習stm32定時器
?? C
?? 第 1 頁 / 共 2 頁
字號:
{
  __ASM("strexb r0, r0, [r1]");
  __ASM("bx lr");
}

/**
 * @brief  STR Exclusive (16 bit)
 *
 * @param  value  value to store
 * @param  *addr  address pointer
 * @return        successful / failed
 *
 * Exclusive STR command for 16 bit values
 */
uint32_t __STREXH(uint16_t value, uint16_t *addr)
{
  __ASM("strexh r0, r0, [r1]");
  __ASM("bx lr");
}

/**
 * @brief  STR Exclusive (32 bit)
 *
 * @param  value  value to store
 * @param  *addr  address pointer
 * @return        successful / failed
 *
 * Exclusive STR command for 32 bit values
 */
uint32_t __STREXW(uint32_t value, uint32_t *addr)
{
  __ASM("strex r0, r0, [r1]");
  __ASM("bx lr");
}

#pragma diag_default=Pe940


#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/
/* GNU gcc specific functions */

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

  __ASM volatile ("MRS %0, psp\n\t" 
                  "MOV r0, %0 \n\t"
                  "BX  lr     \n\t"  : "=r" (result) );
  return(result);
}

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

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

  __ASM volatile ("MRS %0, msp\n\t" 
                  "MOV r0, %0 \n\t"
                  "BX  lr     \n\t"  : "=r" (result) );
  return(result);
}

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

/**
 * @brief  Return the Base Priority value
 *
 * @return 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  basePri  BasePriority
 *
 * Set the base priority register
 */
void __set_BASEPRI(uint32_t value)
{
  __ASM volatile ("MSR basepri, %0" : : "r" (value) );
}

/**
 * @brief  Return the Priority Mask value
 *
 * @return PriMask
 *
 * Return 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  priMask  PriMask
 *
 * 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
 *
 * @return 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  faultMask  faultMask value
 *
 * Set the fault mask register
 */
void __set_FAULTMASK(uint32_t faultMask)
{
  __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) );
}

/**
 * @brief  Return the Control Register value
* 
*  @return 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  control  Control value
 *
 * Set the control register
 */
void __set_CONTROL(uint32_t control)
{
  __ASM volatile ("MSR control, %0" : : "r" (control) );
}


/**
 * @brief  Reverse byte order in integer value
 *
 * @param  value  value to reverse
 * @return        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  value  value to reverse
 * @return        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  value  value to reverse
 * @return        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  value  value to reverse
 * @return        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 (8 bit)
 *
 * @param  *addr  address pointer
 * @return        value of (*address)
 *
 * Exclusive LDR command for 8 bit value
 */
uint8_t __LDREXB(uint8_t *addr)
{
    uint8_t result=0;
  
   __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) );
   return(result);
}

/**
 * @brief  LDR Exclusive (16 bit)
 *
 * @param  *addr  address pointer
 * @return        value of (*address)
 *
 * Exclusive LDR command for 16 bit values
 */
uint16_t __LDREXH(uint16_t *addr)
{
    uint16_t result=0;
  
   __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) );
   return(result);
}

/**
 * @brief  LDR Exclusive (32 bit)
 *
 * @param  *addr  address pointer
 * @return        value of (*address)
 *
 * Exclusive LDR command for 32 bit values
 */
uint32_t __LDREXW(uint32_t *addr)
{
    uint32_t result=0;
  
   __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) );
   return(result);
}

/**
 * @brief  STR Exclusive (8 bit)
 *
 * @param  value  value to store
 * @param  *addr  address pointer
 * @return        successful / failed
 *
 * Exclusive STR command for 8 bit values
 */
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 (16 bit)
 *
 * @param  value  value to store
 * @param  *addr  address pointer
 * @return        successful / failed
 *
 * Exclusive STR command for 16 bit values
 */
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 (32 bit)
 *
 * @param  value  value to store
 * @param  *addr  address pointer
 * @return        successful / failed
 *
 * Exclusive STR command for 32 bit values
 */
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);
}


#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/
/* TASKING carm specific functions */

/*
 * The CMSIS functions have been implemented as intrinsics in the compiler.
 * Please use "carm -?i" to get an up to date list of all instrinsics,
 * Including the CMSIS ones.
 */

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美男同性恋视频网站| 亚洲美女视频在线观看| 91精品国产免费| 欧美日韩和欧美的一区二区| 91激情在线视频| 欧美在线观看18| 欧美日韩不卡一区| 日韩一区二区电影| 欧美精品一区男女天堂| 欧美精品一区二区三区一线天视频| 欧美电影影音先锋| 欧美videos大乳护士334| 日韩一区二区三区免费看| 欧美一区二区在线播放| 欧美电影免费观看高清完整版| 日韩午夜激情电影| 久久精品欧美一区二区三区麻豆| 中文幕一区二区三区久久蜜桃| 日本一区二区三区在线观看| 中文字幕中文乱码欧美一区二区| 中文字幕在线观看不卡视频| 亚洲欧美经典视频| 日本不卡的三区四区五区| 日本sm残虐另类| 国产美女久久久久| 成人av电影免费观看| 色婷婷av一区二区三区gif | 精品视频在线免费看| 欧美军同video69gay| 精品国产凹凸成av人网站| 日本一区二区免费在线观看视频| 日韩一区欧美一区| 亚洲福利视频一区二区| 精品一区二区三区免费播放| 福利电影一区二区三区| 91成人免费在线视频| 欧美一区2区视频在线观看| 久久久99精品久久| 一区二区成人在线| 久久丁香综合五月国产三级网站| 成人免费看视频| 欧美日韩一区二区三区在线| 日韩欧美不卡一区| 亚洲色图制服诱惑 | 成人免费av网站| 欧美日韩三级一区| 国产日产欧美一区二区三区| 亚洲综合丁香婷婷六月香| 久久精品免费观看| 色噜噜狠狠色综合中国| 精品免费日韩av| 亚洲最大成人网4388xx| 国产剧情一区二区三区| 欧美三级在线视频| 国产精品美女www爽爽爽| 性做久久久久久免费观看| 91免费国产在线观看| 精品免费一区二区三区| 亚洲啪啪综合av一区二区三区| 91精品国产综合久久久蜜臀图片| 日本一区二区成人在线| 亚洲一区二区三区四区的| 国模大尺度一区二区三区| 日本韩国精品一区二区在线观看| 久久综合中文字幕| 午夜亚洲国产au精品一区二区| 成人午夜私人影院| 精品国产乱码久久久久久免费 | 国产精品久久久久影视| 美日韩一区二区| 欧美视频一区二区三区四区 | 日韩精品91亚洲二区在线观看| 成人午夜激情在线| 26uuu久久综合| 日韩国产欧美在线观看| 色狠狠桃花综合| 国产精品色呦呦| 精品系列免费在线观看| 欧美人体做爰大胆视频| 亚洲乱码国产乱码精品精小说 | 一区二区三区高清| 99re在线视频这里只有精品| 久久婷婷色综合| 久久黄色级2电影| 欧美一级国产精品| 天堂蜜桃91精品| 日本精品一区二区三区高清 | 亚洲精品伦理在线| 成人在线综合网站| 久久嫩草精品久久久精品| 日韩av中文在线观看| 欧美日韩高清一区二区三区| 亚洲午夜精品在线| 欧美手机在线视频| 亚洲尤物视频在线| 欧美日韩一区二区不卡| 亚洲自拍都市欧美小说| 欧美午夜免费电影| 亚洲一区二区三区四区在线观看| 色婷婷综合五月| 亚洲一区二区欧美日韩| 欧美在线观看一区二区| 亚洲成人三级小说| 欧美精品在线观看播放| 日韩不卡在线观看日韩不卡视频| 欧美乱妇23p| 日本不卡视频在线| 欧美精品一区二区三区很污很色的 | 亚洲欧洲日韩一区二区三区| 国产成人午夜精品5599| 中文字幕av一区二区三区免费看| 成人黄色国产精品网站大全在线免费观看 | 欧美日韩一区二区三区高清| 亚洲成人精品一区| 91精品国产综合久久久久久| 免费成人美女在线观看| 久久午夜国产精品| 成人18视频在线播放| 一区二区视频在线| 欧美卡1卡2卡| 国精产品一区一区三区mba桃花| 久久久精品国产免大香伊| 国产成人免费视频精品含羞草妖精| 中文字幕第一页久久| 在线亚洲一区观看| 日韩电影在线观看网站| 久久久久99精品国产片| 从欧美一区二区三区| 夜夜精品视频一区二区| 欧美电影免费观看高清完整版| 国产成人免费视频网站高清观看视频| 国产精品福利一区| 精品视频一区二区不卡| 精品在线免费视频| 国产精品国产三级国产专播品爱网 | 免费在线成人网| 亚洲国产电影在线观看| 91精品1区2区| 九色综合狠狠综合久久| 中文字幕一区二区三区不卡 | 国产情人综合久久777777| 色哟哟一区二区在线观看| 日本美女视频一区二区| 欧美国产精品一区二区三区| 欧美这里有精品| 国内精品第一页| 亚洲综合久久av| 久久久精品国产99久久精品芒果| 色网站国产精品| 国产美女视频91| 亚洲地区一二三色| 国产嫩草影院久久久久| 欧美日韩一区二区三区免费看| 国产很黄免费观看久久| 午夜欧美在线一二页| 国产日韩精品视频一区| 欧美日本免费一区二区三区| 成人小视频在线| 免费成人在线播放| 亚洲激情av在线| 国产欧美一区二区精品婷婷 | 蜜臀久久99精品久久久久宅男| 久久久久国产精品人| 欧美精品日韩一本| 99视频国产精品| 精品一区二区日韩| 亚洲一线二线三线视频| 久久精品亚洲精品国产欧美 | 国产精品久久久久一区| 欧美一级高清大全免费观看| 色婷婷久久综合| 高清国产一区二区| 麻豆一区二区三| 天天综合色天天综合| 亚洲欧美激情插| 国产精品久久久久9999吃药| 精品少妇一区二区三区日产乱码 | 99视频一区二区| 国产老妇另类xxxxx| 日本中文在线一区| 亚洲二区视频在线| 中文字幕日韩欧美一区二区三区| 26uuu国产一区二区三区| 欧美日韩国产电影| 欧美午夜精品久久久| 不卡av免费在线观看| 国产电影精品久久禁18| 久久国产精品第一页| 日本在线不卡一区| 丝袜美腿亚洲一区| 亚洲第一搞黄网站| 亚洲国产精品精华液网站| 亚洲女女做受ⅹxx高潮| 亚洲欧美国产三级| 亚洲欧美激情视频在线观看一区二区三区| 欧美激情在线一区二区| 国产欧美一区二区在线| 久久精品人人做人人综合 | 亚洲综合在线观看视频| 自拍偷自拍亚洲精品播放|