stm_usb_fs_lib/src/usb_mem.c@0:8f0d870509fe, 2017-09-04 (annotated)
- Committer:
- Sergunb
- Date:
- Mon Sep 04 12:04:13 2017 +0000
- Revision:
- 0:8f0d870509fe
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sergunb | 0:8f0d870509fe | 1 | /******************** (C) COPYRIGHT 2010 STMicroelectronics ******************** |
Sergunb | 0:8f0d870509fe | 2 | * File Name : usb_mem.c |
Sergunb | 0:8f0d870509fe | 3 | * Author : MCD Application Team |
Sergunb | 0:8f0d870509fe | 4 | * Version : V3.2.1 |
Sergunb | 0:8f0d870509fe | 5 | * Date : 07/05/2010 |
Sergunb | 0:8f0d870509fe | 6 | * Description : Utility functions for memory transfers to/from PMA |
Sergunb | 0:8f0d870509fe | 7 | ******************************************************************************** |
Sergunb | 0:8f0d870509fe | 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS |
Sergunb | 0:8f0d870509fe | 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. |
Sergunb | 0:8f0d870509fe | 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, |
Sergunb | 0:8f0d870509fe | 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE |
Sergunb | 0:8f0d870509fe | 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING |
Sergunb | 0:8f0d870509fe | 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. |
Sergunb | 0:8f0d870509fe | 14 | *******************************************************************************/ |
Sergunb | 0:8f0d870509fe | 15 | #ifndef STM32F10X_CL |
Sergunb | 0:8f0d870509fe | 16 | |
Sergunb | 0:8f0d870509fe | 17 | /* Includes ------------------------------------------------------------------*/ |
Sergunb | 0:8f0d870509fe | 18 | #include "usb_lib.h" |
Sergunb | 0:8f0d870509fe | 19 | |
Sergunb | 0:8f0d870509fe | 20 | /* Private typedef -----------------------------------------------------------*/ |
Sergunb | 0:8f0d870509fe | 21 | /* Private define ------------------------------------------------------------*/ |
Sergunb | 0:8f0d870509fe | 22 | /* Private macro -------------------------------------------------------------*/ |
Sergunb | 0:8f0d870509fe | 23 | /* Private variables ---------------------------------------------------------*/ |
Sergunb | 0:8f0d870509fe | 24 | /* Extern variables ----------------------------------------------------------*/ |
Sergunb | 0:8f0d870509fe | 25 | /* Private function prototypes -----------------------------------------------*/ |
Sergunb | 0:8f0d870509fe | 26 | /* Private functions ---------------------------------------------------------*/ |
Sergunb | 0:8f0d870509fe | 27 | /******************************************************************************* |
Sergunb | 0:8f0d870509fe | 28 | * Function Name : UserToPMABufferCopy |
Sergunb | 0:8f0d870509fe | 29 | * Description : Copy a buffer from user memory area to packet memory area (PMA) |
Sergunb | 0:8f0d870509fe | 30 | * Input : - pbUsrBuf: pointer to user memory area. |
Sergunb | 0:8f0d870509fe | 31 | * - wPMABufAddr: address into PMA. |
Sergunb | 0:8f0d870509fe | 32 | * - wNBytes: no. of bytes to be copied. |
Sergunb | 0:8f0d870509fe | 33 | * Output : None. |
Sergunb | 0:8f0d870509fe | 34 | * Return : None . |
Sergunb | 0:8f0d870509fe | 35 | *******************************************************************************/ |
Sergunb | 0:8f0d870509fe | 36 | void UserToPMABufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) |
Sergunb | 0:8f0d870509fe | 37 | { |
Sergunb | 0:8f0d870509fe | 38 | uint32_t n = (wNBytes + 1) >> 1; /* n = (wNBytes + 1) / 2 */ |
Sergunb | 0:8f0d870509fe | 39 | uint32_t i, temp1; |
Sergunb | 0:8f0d870509fe | 40 | uint16_t *pdwVal; |
Sergunb | 0:8f0d870509fe | 41 | pdwVal = (uint16_t *)(wPMABufAddr * 2 + PMAAddr); |
Sergunb | 0:8f0d870509fe | 42 | for (i = n; i != 0; i--) |
Sergunb | 0:8f0d870509fe | 43 | { |
Sergunb | 0:8f0d870509fe | 44 | temp1 = (uint16_t) * pbUsrBuf; |
Sergunb | 0:8f0d870509fe | 45 | pbUsrBuf++; |
Sergunb | 0:8f0d870509fe | 46 | *pdwVal++ = temp1 | (uint16_t) * pbUsrBuf << 8; |
Sergunb | 0:8f0d870509fe | 47 | pdwVal++; |
Sergunb | 0:8f0d870509fe | 48 | pbUsrBuf++; |
Sergunb | 0:8f0d870509fe | 49 | } |
Sergunb | 0:8f0d870509fe | 50 | } |
Sergunb | 0:8f0d870509fe | 51 | /******************************************************************************* |
Sergunb | 0:8f0d870509fe | 52 | * Function Name : PMAToUserBufferCopy |
Sergunb | 0:8f0d870509fe | 53 | * Description : Copy a buffer from user memory area to packet memory area (PMA) |
Sergunb | 0:8f0d870509fe | 54 | * Input : - pbUsrBuf = pointer to user memory area. |
Sergunb | 0:8f0d870509fe | 55 | * - wPMABufAddr = address into PMA. |
Sergunb | 0:8f0d870509fe | 56 | * - wNBytes = no. of bytes to be copied. |
Sergunb | 0:8f0d870509fe | 57 | * Output : None. |
Sergunb | 0:8f0d870509fe | 58 | * Return : None. |
Sergunb | 0:8f0d870509fe | 59 | *******************************************************************************/ |
Sergunb | 0:8f0d870509fe | 60 | void PMAToUserBufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) |
Sergunb | 0:8f0d870509fe | 61 | { |
Sergunb | 0:8f0d870509fe | 62 | uint32_t n = (wNBytes + 1) >> 1;/* /2*/ |
Sergunb | 0:8f0d870509fe | 63 | uint32_t i; |
Sergunb | 0:8f0d870509fe | 64 | uint32_t *pdwVal; |
Sergunb | 0:8f0d870509fe | 65 | pdwVal = (uint32_t *)(wPMABufAddr * 2 + PMAAddr); |
Sergunb | 0:8f0d870509fe | 66 | for (i = n; i != 0; i--) |
Sergunb | 0:8f0d870509fe | 67 | { |
Sergunb | 0:8f0d870509fe | 68 | *(uint16_t*)pbUsrBuf++ = *pdwVal++; |
Sergunb | 0:8f0d870509fe | 69 | pbUsrBuf++; |
Sergunb | 0:8f0d870509fe | 70 | } |
Sergunb | 0:8f0d870509fe | 71 | } |
Sergunb | 0:8f0d870509fe | 72 | |
Sergunb | 0:8f0d870509fe | 73 | #endif /* STM32F10X_CL */ |
Sergunb | 0:8f0d870509fe | 74 | /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/ |