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

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

?? bsp_st.c

?? IAR 平臺ATMEL 的例程, 和說明
?? C
字號:
/*-----------------------------------------------------------------------------
*   EUROPE TECHNOLOGIES Software Support
*------------------------------------------------------------------------------
* The software is delivered "AS IS" without warranty or condition of any
* kind, either express, implied or statutory. This includes without
* limitation any warranty or condition with respect to merchantability or
* fitness for any particular purpose, or against the infringements of
* intellectual property rights of others.
*------------------------------------------------------------------------------
*
* Processor   : easyCAN
* File Name   : bsp_st.c
* Description : Function declarations for Simple Timer for the BSP
* Version     : 1.01
*
*       +----- (NEW | MODify | ADD | DELete)                                 
*       |                                                                    
*  No   |   when       who                what               
*-----+---+----------+------------------+--------------------------------------
* 001  MOD  01/04/01   Olivier MAZUYER    Creation
* 002  MOD  06/08/01   Frederic SAMSON    - Take account of both ST0 and ST1 timers
*                                         - Add comments 
* 003  ADD  08/08/01   Frederic SAMSON    - Add BSP_STStartDelay, ST1CH1_InterruptHandler
*                                           ST0CH1_InterruptHandler, ST1CH0_InterruptHandler
*                                           ST1CH1_InterruptHandler 
* 004  MOD  31/01/02   Mahmoud Mesgarzadeh   Clean Up
*----------------------------------------------------------------------------*/


/******************************************************************************
* Includes 
******************************************************************************/
#include "csp.h"
#include "bsp.h"

BSP_ST_CONFIGURE_T BSP_ST_Config_s ;


/******************************************************************************
Function          : BSP_STWaitDelay
Description       : This function configures and starts ST to count down to 0. 
                    The function wait that the ST counter reaches 0 which takes 
                    the time delays specified. At the end, the specified ST 
                    is stopped and the function returns.
Input             : 
- *st : Pointer on 創CSP_ST_T創 structure
- channel_u16 : simple timer channel 
- delay_u32 : counter value
Functions called  : 創CSP_STInit創, 創CSP_STConfigureChannel創, 創CSP_STEnable創,
                    創CSP_ST_GET_SR創, 創CSP_STDisable創
Returns           : None
******************************************************************************/
void BSP_STWaitDelay(CSP_ST_T *const st, U16_T channel_u16, U32_T delay_u32)
{
   /* local variables */
   U16_T sysscal_u16  = 0x0 ;
   U8_T  prescalar_u8 = 0x4 ;
   U32_T status_u32   = 0x0;
   unsigned long long counter_val_u64;  
   U32_T prescal_mode_u32;

   /* Compute counter value */
   counter_val_u64 = delay_u32 * (BSP_SYSTEM_CLOCK >> prescalar_u8) / (2 * (sysscal_u16 + 1)) / 1000;

   /* Do until counter value is less than a 16 bits word */
   while (counter_val_u64 > 0xFFFF)
   {
      /* Increment Sysscal : system clock prescalar value */
      sysscal_u16 += 1;

      /* Compute new counter value */
      counter_val_u64 = delay_u32 * (BSP_SYSTEM_CLOCK >> prescalar_u8) / (2 * (sysscal_u16 + 1)) / 1000;        
   }  

   /* Define prescal_mode value */
   prescal_mode_u32 = (sysscal_u16 << 8 | SELECTCLK_SYS << 4 | prescalar_u8);

   /* Simple Timer Init */
   CSP_STInit(st);
   CSP_STConfigureChannel(st, channel_u16, prescal_mode_u32, (U16_T) counter_val_u64);

   /* Simple Timer Start */
   CSP_STEnable(st, channel_u16);
   

   /* Is it Channel 1 ? */
   if(channel_u16 == 0)
   {
      /* Yes, Wait until the channel 1 has reached the end of down counting */
      while ( (status_u32 & CHEND0) != CHEND0 )
      {
         /* Read Status Register */
         status_u32 = CSP_ST_GET_SR(st);
      }
   }

   else
   {
      /* No, Wait until the channel 2 has reach the end of down counting */
      while ( (status_u32 & CHEND1) != CHEND1 )
      {
         /* Read Status Register */
         status_u32 = CSP_ST_GET_SR(st);
      }
   }

   /* Simple Timer Stop */
   CSP_STDisable(st, channel_u16);
}


/******************************************************************************
Function          : BSP_STStartDelay
Description       : This function Set the Simple Timer to count down during a 
                    particular delay in ms and generate an interrupt on the 
                    specified channel.
                    The interruption handler for each ST are situated in bsp_st_int.s. 
                    The assembler handler call its C handler defined in the 
                    BSP ST library (創ST0CH0_InterruptHandler創, 創ST0CH1_InterruptHandler創, 
                    創ST1CH0_InterruptHandler創 and 創ST1CH1_InterruptHandler創).
                    Then the C handler call the function that should be 
                    defined in the structure ((BSP_ST_Config_s.callback_function(ST0,0x00) 
                    for ST0CH0).
                    Note : Prior to call this function, BSP_ST_Config_s.callback_function 
                    should be defined
Input             : 
- *st : Pointer on 創CSP_ST_T創 structure
- channel_u16 : simple timer channel 
- delay_u32 : counter value
Functions called  : 創CSP_STInit創, 創CSP_STConfigureChannel創, 創CSP_STEnable創,
                    創CSP_STConfigInterrupt創
Returns           : None
******************************************************************************/
void BSP_STStartDelay(CSP_ST_T *const st, U16_T channel_u16, U32_T delay_u32)
{
   /* local variables */
   U16_T sysscal_u16  = 0x0 ;
   U8_T  prescalar_u8 = 0x4 ;
   unsigned long long  counter_val_u64;  
   U32_T prescal_mode_u32;
   U32_T callback_u32;

   /* Compute counter value */
   counter_val_u64 = delay_u32 * (BSP_SYSTEM_CLOCK >> prescalar_u8) / (2 * (sysscal_u16 + 1)) / 1000;

   /* Do until counter value is less than a 16 bits word */
   while (counter_val_u64 > 0xFFFF)
   {
      /* Increment Sysscal : system clock prescalar value */
      sysscal_u16 += 1;

      /* Compute new counter value */
      counter_val_u64 = delay_u32 * (BSP_SYSTEM_CLOCK >> prescalar_u8) / (2 * (sysscal_u16 + 1)) / 1000;        
   }  


   /* Define prescal_mode value */
   prescal_mode_u32 = (sysscal_u16 << 8 | SELECTCLK_SYS | prescalar_u8);

   /* Simple Timer Init */
   CSP_STInit(st);
   CSP_STConfigureChannel(st, channel_u16, prescal_mode_u32, (U16_T) counter_val_u64);

   if (st==ST0) 
   {
       if (channel_u16==0)
       {
           callback_u32= (U32_T) ST0CH0_AsmInterruptHandler;
       }
       else
       {
           callback_u32= (U32_T) ST0CH1_AsmInterruptHandler;
       }
   }
   else
   {
       if (channel_u16==0)
       {
           callback_u32= (U32_T) ST1CH0_AsmInterruptHandler;
       }
       else
       {
           callback_u32= (U32_T) ST1CH1_AsmInterruptHandler;
       }
   }
   
   /* Config interrupt */
   CSP_STConfigInterrupt(st, (HIGH_LEVEL_SENSITIVE|PRIOR_1), channel_u16 + 1, (U32_T) callback_u32);
 
   /* Simple Timer Start */
   CSP_STEnable(st, channel_u16);

}

/******************************************************************************
Function          : ST0CH0_InterruptHandler
Description       : Call to ST0 CH0 callback function 
Input             : None
Functions called  : 創CSP_ST_SET_CSR創
Returns           : None
******************************************************************************/
void ST0CH0_InterruptHandler(void)
{
   (BSP_ST_Config_s.callback_function)(ST0,0x00);
   CSP_ST_SET_CSR(ST0, CHEND0);
}

/******************************************************************************
Function          : ST0CH1_InterruptHandler
Description       : Call to ST0 CH1 callback function 
Input             : None
Functions called  : 創CSP_ST_SET_CSR創
Returns           : None
******************************************************************************/
void ST0CH1_InterruptHandler(void)
{
   (BSP_ST_Config_s.callback_function)(ST0,0x01);
   CSP_ST_SET_CSR(ST0, CHEND1);
}

/******************************************************************************
Function          : ST1CH0_InterruptHandler
Description       : Call to ST1 CH0 callback function 
Input             : None
Functions called  : 創CSP_ST_SET_CSR創
Returns           : None
******************************************************************************/
void ST1CH0_InterruptHandler(void)
{
   (BSP_ST_Config_s.callback_function)(ST1,0x00);
   CSP_ST_SET_CSR(ST1, CHEND0);
}

/******************************************************************************
Function          : ST1CH1_InterruptHandler
Description       : Call to ST1 CH1 callback function 
Input             : None
Functions called  : 創CSP_ST_SET_CSR創
Returns           : None
******************************************************************************/
void ST1CH1_InterruptHandler(void)
{
   (BSP_ST_Config_s.callback_function)(ST1,0x01);
   CSP_ST_SET_CSR(ST1, CHEND1);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av性久久久久蜜臀av麻豆| 久久精工是国产品牌吗| 视频一区免费在线观看| 国模冰冰炮一区二区| 欧美中文字幕不卡| 国产午夜精品久久久久久免费视| 亚洲一区二区精品视频| 国产91清纯白嫩初高中在线观看| 欧美久久久久久蜜桃| 怡红院av一区二区三区| 粉嫩av一区二区三区在线播放| 91精品国产入口| 亚洲欧美日韩中文字幕一区二区三区 | 精品一区二区免费视频| 欧美天堂一区二区三区| 日韩伦理av电影| 国产·精品毛片| 国产日本一区二区| 国产一区二区伦理| 久久影音资源网| 精品一区二区三区免费观看| 欧美成人性战久久| 美女久久久精品| 欧美久久久久久蜜桃| 日韩主播视频在线| 欧美电影一区二区| 日韩电影免费一区| 555www色欧美视频| 秋霞成人午夜伦在线观看| 欧美日韩国产片| 午夜精品久久久久久久蜜桃app| 色综合久久久网| 亚洲黄色免费网站| 欧美亚洲综合一区| 亚洲午夜激情av| 欧美人与z0zoxxxx视频| 日韩av中文字幕一区二区| 日韩一区二区三区视频| 成人丝袜18视频在线观看| 亚洲欧美日韩国产综合| 久久久综合激的五月天| 久久99精品国产.久久久久 | 国产美女在线精品| 久久一夜天堂av一区二区三区| 国产精品中文字幕日韩精品 | 精品成人私密视频| 国产高清成人在线| 国产精品视频一区二区三区不卡| 成人国产精品免费网站| 亚洲精品一卡二卡| 欧美精品第1页| 激情小说亚洲一区| 国产精品久久久久影院色老大 | 亚洲五码中文字幕| 丁香五精品蜜臀久久久久99网站| 欧美一级理论片| 国产精品69久久久久水密桃| 亚洲欧洲另类国产综合| 欧美性猛交xxxxxx富婆| 美女一区二区三区| 中文字幕一区二区三区精华液| 91高清视频在线| 久久国产精品99久久久久久老狼| 国产精品女主播在线观看| 在线观看av不卡| 国产成人亚洲综合色影视| 亚洲午夜免费福利视频| 久久免费看少妇高潮| 91久久奴性调教| 国产呦萝稀缺另类资源| 亚洲愉拍自拍另类高清精品| 久久嫩草精品久久久精品一| 欧美日韩美少妇| 成人免费视频app| 免费人成在线不卡| 亚洲欧美日韩国产另类专区| 26uuu国产日韩综合| 在线亚洲高清视频| 国产精品一二三四| 水野朝阳av一区二区三区| 中文字幕欧美一| 精品日本一线二线三线不卡| 日本久久电影网| 美腿丝袜亚洲色图| 欧美一个色资源| 成人黄色电影在线| 国产亚洲一区字幕| 欧美丝袜丝nylons| 不卡一区二区中文字幕| 久久国产日韩欧美精品| 午夜精品福利久久久| 亚洲精品久久7777| 欧美国产国产综合| 欧美精品一区二| 日韩视频一区在线观看| 欧美视频中文字幕| 一本到一区二区三区| 成人网页在线观看| 国产乱人伦偷精品视频不卡| 久久国产剧场电影| 免费日本视频一区| 日韩电影在线一区二区三区| 亚洲成av人片在线| 亚洲一区在线视频观看| 亚洲影院理伦片| 亚洲狠狠丁香婷婷综合久久久| 国产精品―色哟哟| 一区二区三区鲁丝不卡| 国产夫妻精品视频| 最新国产の精品合集bt伙计| 久久精品人人做人人综合 | 中文字幕制服丝袜一区二区三区| 精品粉嫩超白一线天av| 欧美电视剧在线看免费| 精品国产一区二区三区av性色| 欧美一区二区高清| 日韩精品一区二区三区中文不卡 | 日韩欧美国产wwwww| 91精品国产入口在线| 日韩一区二区三区电影在线观看| 91精品国产欧美一区二区成人| 欧美精品成人一区二区三区四区| 在线不卡中文字幕播放| 91精品国产入口在线| 精品福利一区二区三区免费视频| 亚洲图片欧美综合| 国产欧美一区二区在线观看| 精品欧美乱码久久久久久| 成人性生交大片免费| 成人午夜精品在线| 91麻豆自制传媒国产之光| 91福利在线免费观看| 欧美美女激情18p| 欧美一级欧美一级在线播放| 欧美成人a∨高清免费观看| 国产视频亚洲色图| 一区二区三区在线观看国产| 午夜精品福利视频网站| 国内成人精品2018免费看| 成人免费视频播放| 欧美日韩综合色| 精品国产99国产精品| 久久久噜噜噜久噜久久综合| 国产精品热久久久久夜色精品三区| 亚洲欧美自拍偷拍色图| 香蕉成人啪国产精品视频综合网| 极品少妇一区二区三区精品视频| 成人动漫视频在线| 91精品国产综合久久精品app| 久久看人人爽人人| 亚洲男人电影天堂| 在线视频综合导航| 2021国产精品久久精品| 亚洲日本一区二区三区| 美腿丝袜一区二区三区| 97久久精品人人澡人人爽| 日韩一区二区在线播放| 亚洲欧洲精品成人久久奇米网| 天天综合日日夜夜精品| 成人开心网精品视频| 欧美丰满少妇xxxxx高潮对白| 中文字幕欧美激情| 日本午夜精品视频在线观看| 波多野结衣中文字幕一区| 日韩一区二区麻豆国产| 亚洲精品日日夜夜| 国产高清精品久久久久| 91精品福利在线一区二区三区| 中文字幕一区二区三区不卡在线| 精品一区二区三区在线播放 | 欧美国产日韩精品免费观看| 午夜精品福利在线| 91麻豆国产自产在线观看| 久久亚洲精品小早川怜子| 午夜欧美视频在线观看| 色综合久久久久久久| 国产日韩欧美不卡| 久久精品国产99国产| 欧美狂野另类xxxxoooo| 一区二区三区国产精品| 不卡视频一二三| 国产欧美精品国产国产专区 | 欧美日韩高清一区二区三区| 国产精品国产成人国产三级 | 精品视频在线免费观看| 中文字幕亚洲综合久久菠萝蜜| 国内久久精品视频| 欧美不卡123| 另类小说图片综合网| 日韩精品一区二区三区在线观看| 日韩高清一区二区| 91麻豆精品91久久久久久清纯| 亚洲自拍偷拍九九九| 在线精品亚洲一区二区不卡| 亚洲欧美欧美一区二区三区| 色婷婷av久久久久久久| 亚洲免费在线观看| 色猫猫国产区一区二在线视频| 国产精品国产三级国产a| 99精品一区二区三区|