OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3341|回复: 1

求一个模拟SPI的程序,我驱动2.4G!!!求大神帮忙!

[复制链接]

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2015-5-18
在线时间
17 小时
发表于 2015-9-1 12:10:11 | 显示全部楼层 |阅读模式
5金钱
下面是我改过的程序,还是用不了,我改了最下面的那个函数和定义了一下IO口,新手求大神帮我看看!<br />
#include "spi.h"<br />
#include "stm32f10x_spi.h"<br />
<br />
//////////////////////////////////////////////////////////////////////////////////        &nbsp;<br />
//本程序只供学习使用,未经作者许可,不得用于其它任何用途<br />
//Mini STM32开发板<br />
//SPI 驱动函数         &nbsp;&nbsp;<br />
//正点原子@ALIENTEK<br />
//技术论坛:www.openedv.com<br />
//修改日期:2010/6/13&nbsp;<br />
//版本:V1.0<br />
//版权所有,盗版必究。<br />
//Copyright(C) 正点原子 2009-2019<br />
//All rights reserved<br />
//////////////////////////////////////////////////////////////////////////////////          &nbsp;<br />
&nbsp;<br />
<br />
//以下是SPI模块的初始化代码,配置成主机模式,访问SD Card/W25X16/24L01/JF24C                                                         &nbsp;<br />
//SPI口初始化<br />
//这里针是对SPI1的初始化<br />
<br />
//SPI_InitTypeDef &nbsp;SPI_InitStructure;<br />
<br />
#define MOSI_H GPIO_SetBits(GPIOA, GPIO_Pin_7)<br />
#define MOSI_L GPIO_ResetBits(GPIOA, GPIO_Pin_7)<br />
#define SCLK_H GPIO_SetBits(GPIOA, GPIO_Pin_5)<br />
#define SCLK_L GPIO_ResetBits(GPIOA, GPIO_Pin_5)<br />
#define MISO GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6)<br />
<br />
void SPI1_Init(void)<br />
{<br />
GPIO_InitTypeDef GPIO_InitStructure;<br />
&nbsp;&nbsp;<br />
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); <br />
&nbsp;<br />
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;<br />
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; &nbsp;//复用推挽输出<br />
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />
GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br />
<br />
&nbsp;        GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);                &nbsp;<br />
} &nbsp;&nbsp;<br />
//SPI 速度设置函数<br />
//SpeedSet:<br />
//SPI_BaudRatePrescaler_2 &nbsp; 2分频 &nbsp; (SPI 36M@sys 72M)<br />
//SPI_BaudRatePrescaler_8 &nbsp; 8分频 &nbsp; (SPI 9M@sys 72M)<br />
//SPI_BaudRatePrescaler_16 &nbsp;16分频 &nbsp;(SPI 4.5M@sys 72M)<br />
//SPI_BaudRatePrescaler_256 256分频 (SPI 281.25K@sys 72M)<br />
&nbsp;&nbsp;<br />
void SPI1_SetSpeed(u8 SpeedSet)<br />
{<br />
//SPI_InitStructure.SPI_BaudRatePrescaler = SpeedSet;<br />
&nbsp;         //SPI_Init(SPI1, &amp;SPI_InitStructure);<br />
//        SPI_Cmd(SPI1,ENABLE);<br />
SPI1-&gt;CR1&amp;=0XFFC7;&nbsp;<br />
SPI1-&gt;CR1|=SpeedSet;        //设置SPI1速度 &nbsp;<br />
SPI1-&gt;CR1|=1&lt;&lt;6;                 //SPI设备使能&nbsp;<br />
}&nbsp;<br />
<br />
//SPIx 读写一个字节<br />
//TxData:要写入的字节<br />
//返回值:读取到的字节<br />
<br />
u8 SPI1_ReadWriteByte(u8 TxData)<br />
{<br />
u8 i;<br />
u8 temp=0;<br />
for(i=8;i&gt;0;i--)<br />
{<br />
//MOSI准备数据位<br />
if(TxData&amp;0x80)MOSI_H;<br />
else MOSI_L;<br />
TxData&lt;&lt;=1;<br />
<br />
//SCLK产生上升沿<br />
SCLK_H;<br />
__nop();<br />
__nop();<br />
__nop();<br />
<br />
//MISO读取收到的数据位,如果是1,那么temp最低位置1,数据位左移<br />
temp&lt;&lt;=1; <br />
if(MISO)temp++;<br />
<br />
//SCLK恢复为低电平,并保持一段时间<br />
SCLK_L;<br />
__nop();<br />
__nop();<br />
__nop();<br />
}<br />
return temp;<br />
}<br />
<div>
        <br />
<br />
</div>

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2015-9-1 21:24:01 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-9-29 23:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表