`

MDK FS driver for STM32

    博客分类:
  • ARM
 
阅读更多

 

/*----------------------------------------------------------------------------
 *      RL-ARM - FlashFS
 *----------------------------------------------------------------------------
 *      Name:    SPI_STM32F103.c
 *      Purpose: Serial Peripheral Interface Driver for ST STM32F103
 *      Rev.:    V4.12
 *----------------------------------------------------------------------------
 *      This code is part of the RealView Run-Time Library.
 *      Copyright (c) 2004-2010 KEIL - An ARM Company. All rights reserved.
 *---------------------------------------------------------------------------*/

#include <File_Config.h>
#include "stm32f10x.h"

/* SPI_SR - bit definitions. */
#define RXNE    0x01
#define TXE     0x02
#define BSY     0x80

/*----------------------------------------------------------------------------
 *      SPI Driver Functions
 *----------------------------------------------------------------------------
 *  Required functions for SPI driver module:
 *   - void spi_init     ()
 *   - void spi_ss       (U32 ss)
 *   - U8   spi_send     (U8 outb)
 *   - void spi_hi_speed (BOOL on)
 *---------------------------------------------------------------------------*/

/*--------------------------- spi_init --------------------------------------*/

void spi_init (void) {
  /* Initialize and enable the SSP Interface module. */

  /* SPI1_NSS is GPIO, output set to high. */
  GPIOA->BSRR = 0x00000010;

  /* SPI1_SCK, SPI1_MISO, SPI1_MOSI are SPI pins. */
  GPIOA->CRL &= ~0xFFFF0000;
  GPIOA->CRL |=  0xB8B30000;

  /* Card Sensor PA.8 input */
  /* 1 = NO Card, 0 = Card plugged. */
  GPIOA->CRH &= ~0x0000000F;
  GPIOA->CRH |=  0x00000004;

  /* Enable SPI in Master Mode, CPOL=0, CPHA=0. */
  /* Clock speed = fPCLK1 / 256 = 280 kHz at 72 MHz PCLK1 clk. */
  SPI1->CR1  = 0x037C;
  SPI1->CR2  = 0x0000;
}


/*--------------------------- spi_hi_speed ----------------------------------*/

void spi_hi_speed (BOOL on) {
  /* Set a SPI clock to low/high speed for SD/MMC. */

  if (on == __TRUE) {
    /* Max. 25 MBit used for Data Transfer. */
    /* Actual setting 18 MBits. */
    SPI1->CR1 &= ~0x0030;
    SPI1->CR1 |=  0x0008;
  }
  else {
    /* Max. 400 kBit used in Card Initialization. */
    /* Actual setting 280 kBits. */
    SPI1->CR1 |= 0x0038;
  }
}


/*--------------------------- spi_ss ----------------------------------------*/

void spi_ss (U32 ss) {
  /* Enable/Disable SPI Chip Select (drive it high or low). */

  GPIOA->BSRR = ss ? 0x00000010 : 0x00100000;
}


/*--------------------------- spi_send --------------------------------------*/

U8 spi_send (U8 outb) {
  /* Write and Read a byte on SPI interface. */

  /* Wait if TXE cleared, Tx FIFO is full. */
  while (!(SPI1->SR & TXE));
  SPI1->DR = outb;

  /* Wait if RNE cleared, Rx FIFO is empty. */
  while (!(SPI1->SR & RXNE));
  return (SPI1->DR);
}


/*----------------------------------------------------------------------------
 * end of file
 *---------------------------------------------------------------------------*/
  • ff.zip (675.7 KB)
  • 下载次数: 4
分享到:
评论

相关推荐

    STM32F103的mdk514安装包

    使用MDK514进行STM32F103开发时,还需要了解基本的C语言编程、嵌入式系统概念、中断服务程序的编写以及了解STM32的外设接口。此外,理解CubeMX工具如何生成初始化代码也是很有帮助的,它可以自动配置STM32的外设和...

    Keil.STM32F3xx_DFP.2.1.0.pack(官方STM32F3xx系列最新固件库for Keil MDK 5)

    STM32CubeMX is mandatory for use of CMSIS-Driver and MDK-Middleware. This packs contains a subset of the files from STM32Cube_FW_F3 version 1.9.0 (Drivers, STCube documentation and fonts). Updated ...

    MDK环境下STM32的串口打印输出程序模版

    在MDK(Keil uVision)环境下开发基于STM32微控制器的项目时,串口通信是调试和数据传输的重要手段。本程序模板主要涉及如何配置串口以及实现串口打印输出,这对于理解和掌握STM32的外设使用至关重要。 首先,我们...

    MDK STM32F105/107 Keil仿真

    MDK STM32F105/107 Keil仿真是一个重要的开发过程,尤其对于使用STM32F105或STM32F107微控制器的开发者来说。通常,Keil MDK(Microcontroller Development Kit)是ARM处理器广泛应用的集成开发环境,它包含了编译器...

    STM32F10x系列keil5MDK固件包及安装

    Keil uVision5(简称Keil5 MDK)是一款强大的集成开发环境(IDE),特别适合于C/C++语言在微控制器上的开发,支持多种MCU系列,包括STM32F10x。在这个资源中,你将找到用于在Keil5 MDK下开发STM32F10x应用的固件库和...

    MDK下完整的STM32串口程序

    MDK(Keil Microcontroller Development Kit)是ARM公司授权的嵌入式开发工具,广泛用于STM32等微控制器的程序开发。STM32是一款基于ARM Cortex-M内核的32位微控制器,其强大的性能和丰富的外设接口使其在嵌入式领域...

    MDK5C51、STM32双版本.rar

    标题“MDK5C51、STM32双版本.rar”指的是一个压缩包,其中包含了支持Keil C51和MDK(Microcontroller Development Kit)STM32开发的两个版本的工具。MDK5是ARM公司开发的一款强大的嵌入式微控制器开发环境,尤其适用...

    Keil.STM32L4xx_DFP.2.5.0.pack(STM32L4xx系列官方固件库驱动库板级支持包for Keil MDK 5)直接运行即可加载

    Added source code for: STM32L476G-Disco QSPI, STM32L4P5G-DK OSPI, STM32L4P5G-DK PSRAM STM32L4R9I-DK PSRAM, STM32L4R9I-DK OSPI1 and STM32L4R9I-EVAL OSPI. Added PSRAM external Loader support for STM32...

    Keil MDK软件包(STM32器件支持包).zip

    STM32最新MDK支持包

    STM32开发工具 KEIL_MDK开发环境

    STM32开发工具 KEIL_MDK开发环境STM32开发工具 KEIL_MDK开发环境STM32开发工具 KEIL_MDK开发环境STM32开发工具 KEIL_MDK开发环境STM32开发工具 KEIL_MDK开发环境STM32开发工具 KEIL_MDK开发环境STM32开发工具 KEIL_...

    STM32三菱PLC源码,亲测可用,MDK编译_STM32三菱PLCFX3U源码_STM32仿FX3U_fx3u_MDK5可用0

    本资源提供的是一套STM32针对三菱FX3U PLC的源代码,适合在MDK(Keil uVision)环境中编译使用。MDK是由ARM公司开发的嵌入式软件开发工具,支持多种ARM架构的微控制器。 源码兼容MDK的两个主要版本:MDK4和MDK5。...

    STM32全系列 Keil MDK pack包(当前最新离线包)

    STM32全系列 Keil MDK pack离线包 注:由于上传大小限制,除了F0和F1的包,其他的提供链接通过百度云下载。 包括以下包,当前最新版本(20200115) Keil.STM32F0xx_DFP.2.0.0.pack Keil.STM32F1xx_DFP.2.3.0....

    Keil.STM32L4xx_DFP.2.6.0.pack(L4官方固件库驱动库板级支持包for Keil MDK5)直接运行

    Added global define USE_FULL_LL_DRIVER to component ::Device:STM32Cube LL:Common. Added debugProbe board description. Device Support: Updated SVD files and documentation. Reworked device RAM size. ...

    STM32F1pack包

    STM32F1pack包是针对STM32F1系列微控制器的Keil MDK开发支持包。 这个软件包为开发者在使用Keil MDK(Microcontroller Development Kit)进行编程时提供了必要的固件库、设备驱动程序以及一系列中间件和示例代码,...

    关于MDK软件不能模拟仿真STM32的问题解决方法

    关于MDK软件在进行STM32单片机模拟仿真时遇到的问题及其解决方法,本文将详细介绍并分析各种常见问题,并给出相应的解决方案,以期帮助用户在使用MDK软件进行开发时能更加顺利地进行模拟仿真测试。 首先,我们需要...

    Kell Mdk 编译器 添加 stm32f030x 器件

    Keil Mdk 编译器 添加stm32f030x系列芯片的升级文件。 Keil 中Device中无stm32f030x系列芯片,可用此文件添加 包括stm32f030c4 stm32f030c6 stm32f030f4 stm32f030k6 stm32f030r8

    STM32F4开发标准库keil5MDK开发Keil.STM32F4xx_DFP.2.13.0.zip

    因为基于cortex系列芯片采用的内核都是相同的,区别主要为核外的片上的差异(片上外设主要有芯片生产商来定)。这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同芯片厂商生产的cortex微控制器...

    MDK532及Keil.STM32F1xx_DFP.2.3.0.pack 打包下载

    总结来说,这个压缩包包含的MDK532.EXE是Keil的MDK532开发工具,而Keil.STM32F1xx_DFP.2.3.0.pack是针对STM32F1系列的设备支持包,它们共同构成了一个完整的STM32F1系列嵌入式开发环境。对于需要进行STM32F1开发的...

    STM32 Pack for Keil MDK 安装包

    STM32F0xx_DFP.2.1.0 STM32F1xx_DFP.2.3.0 STM32F2xx_DFP.2.9.0 STM32F3xx_DFP.2.1.0 STM32F4xx_DFP.2.14.0 STM32F7xx_DFP.2.13.0 STM32W1xx_DFP.1.0.0 ARM.CMSIS.5.7.0 CMSIS-Driver.2.6.1 ...

Global site tag (gtag.js) - Google Analytics