stm32 io模拟spi通信
2016-05-06 16:54
369 查看
首先借鉴他人的编写程序:
#define MOSI_H GPIO_SetBits(GPIOB, GPIO_Pin_10) #define MOSI_L GPIO_ResetBits(GPIOB, GPIO_Pin_10) #define SCLK_H GPIO_SetBits(GPIOB, GPIO_Pin_13) #define SCLK_L GPIO_ResetBits(GPIOB, GPIO_Pin_13) #define MISO GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) unsigned char SPI_SendByte(unsigned char dt) { u8 i; u8 temp=0; for(i=8;i>0;i--) { if(dt&0x80)MOSI_H; else MOSI_L; dt<<=1; SCLK_H; __nop(); __nop(); __nop(); temp<<=1; if(MISO)temp++; __nop(); __nop(); __nop(); SCLK_L; } return temp; }最后实现自己需要的一个spi主机程序,协议规定CPOL=1,CPHA=1,高位在前,地位在后发送
#define MOSI_H GPIO_SetBits(GPIOF, GPIO_Pin_2) #define MOSI_L GPIO_ResetBits(GPIOF, GPIO_Pin_2) #define SCLK_H GPIO_SetBits(GPIOF, GPIO_Pin_1) #define SCLK_L GPIO_ResetBits(GPIOF, GPIO_Pin_1) #define CS_H GPIO_SetBits(GPIOF, GPIO_Pin_0) #define CS_L GPIO_ResetBits(GPIOF, GPIO_Pin_0)
void SPI_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE); //使能PF端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2; //PF 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOF, &GPIO_InitStructure); //根据设定参数初始化GPIOF GPIO_SetBits(GPIOF,GPIO_Pin_0); //PF0 PF1 PF2 输出高 GPIO_SetBits(GPIOF,GPIO_Pin_1); GPIO_SetBits(GPIOF,GPIO_Pin_2); } unsigned char SPI_SendByte(unsigned char dt) { u8 i; u8 temp=0; for(i=8;i>0;i--) { CS_L; if(dt&0x80) MOSI_H; else MOSI_L; dt<<=1; SCLK_L; __nop(); __nop(); __nop(); __nop(); __nop(); __nop(); SCLK_H; } CS_H; return temp; }
相关文章推荐
- tornado系列:用cookie进行用户验证
- C++ 子类继承带参的父类构造函数应该怎么写
- java集合08--List总结
- SpringBoot集成Swagger
- 从头认识多线程-2.12 synchronized ()代码块不单可以用this,也可以用其他对象
- 学习进度条09
- 适配ios9出现的问题:-canOpenURL: failed for URL
- Android进阶之Fragment和Activity之间通过setArguments传递复杂参数
- 最全面的AndroidStudio配置指南总结-包括护眼模式
- 开始记录学习产品的心得
- <<UML for Java Programmers>> 第11章读书笔记
- android - Bad notification posted - Couldn't expand RemoteViews for: StatusBarNotification
- 微信支付 返回 -2
- MonkeyRunner 环境搭建
- [算法学习]最长回文子串:Manacher算法
- 教你用photoshop制作一款可变颜色的高光质感水晶按钮
- SDUT 2169
- java多线程入门
- uva 357 Let Me Count The Ways
- discuz x3在DIY模块中调用伪静态不成功,显示动态链接的解决办法