`

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...

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

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

    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_...

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

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

    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)进行编程时提供了必要的固件库、设备驱动程序以及一系列中间件和示例代码,...

    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微控制器...

    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 ...

    最新STM32全系列pack包(一) 适用于Keil MDK 下载安装即可使用

    全系列文件包整体资源较大,分为两个资源进行下载:本文件包含以下内容:Keil.STM32C0xx_DFP.1.0.0Keil.STM32F1xx_DFP.2.4.1Keil.STM32F2xx_DFP.2.10.0Keil.STM32F3xx_DFP.2.2.2Keil.STM32F4xx_DFP.2.17.1Keil.STM32...

Global site tag (gtag.js) - Google Analytics