标题:
STM32中的SPI主机程序(已调通)
[打印本页]
作者:
shanxixy
时间:
2017-6-5 22:16
标题:
STM32中的SPI主机程序(已调通)
如题。
实验器材:
战舰STM32F103开发板V3版本
实验目的:
学习GPIO作为输入的使用
硬件资源:
1,DS0(连接在PB5),DS1(连接在PE5)
2,蜂鸣器(连接在PB8)
3,按键KEY0(PE4)/KEY1(PE3)/KEY2(PE2)/KEY_UP(PA0,也称之为WK_UP)
实验现象:
本实验,通过开发板上载有的4个按钮(KEY_UP、KEY0、KEY1和KEY2),来控制板
上的2个LED(DS0和DS1)和蜂鸣器,其中WK_UP控制蜂鸣器,按一次叫,再按一次
停;KEY2控制DS0,按一次亮,再按一次灭;KEY1控制DS1,效果同KEY2;KEY0则
同时控制DS0和DS1,按一次,他们的状态就翻转一次。
注意事项:
无.
0.png
(24.77 KB, 下载次数: 115)
下载附件
2017-6-6 03:15 上传
0.png
(28.39 KB, 下载次数: 102)
下载附件
2017-6-6 03:15 上传
单片机源程序如下:
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"
#include "spi.h"
#define SPI_DR_Addr (*((u16*)0X4000380C))
void SPI_32(u8 *pdata,u8 *buff,u32 leng)
{
// u8 mrece[10];
while(leng--)
{
*buff=SPI2_ReadWriteByte(*pdata);
// SPI2_ReadWriteByte(*pdata);
// *buff=SPI1_ReadByte();
// mrece[10-leng]=SPI1_ReadWriteByte(*buff);
pdata++;
buff++;
}
}
int main(void)
{
// u8 tbuff[]={3,4,5,6,7,8,9,0,1,2};
// u8 rbuff[10];
Stm32_Clock_Init(9); //系统时钟设置
//uart_init(72,115200); //串口初始化为115200
delay_init(72); //延时初始化
//LED_Init(); //初始化与LED连接的硬件接口
//KEY_Init();
SPI2_Init();
SPI2_SetSpeed(SPI_SPEED_256);
while(1)
{
//KEY_Scan();
//if(KEY1==0)
//{
// SPI_32(tbuff,rbuff,10);
SPI2_ReadWriteByte(0X09);
// a=SPI1_ReadByte();
// SPI1_ReadWriteByte(a);
// SPI2_ReadWriteByte(0X02);
//
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
Keil代码下载:
SPI.7z
(386.03 KB, 下载次数: 26)
2022-12-15 17:48 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
tonyinspira
时间:
2018-3-19 09:16
寄存器写的,还是习惯看库函数。。。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1