GPIO模拟spi时序点亮数码管

2024-05-25 05:52

本文主要是介绍GPIO模拟spi时序点亮数码管,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

spi.h

spi.c

main.c

实验效果

spi.h

#ifndef __SPI_H__
#define __SPI_H__#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"//spi初始化
void spi_init();
//spi写入数据
void spi_write(unsigned char data);#endif

spi.c

#include "spi.h"extern void delay_us(void);//spi初始化
void spi_init(){//使能GPIOE时钟RCC->MP_AHB4ENSETR |= (0x1<<4);//PE11配置为输出、推挽输出、无上拉下拉、高速输出GPIOE->MODER &= (~(0x3<<22));GPIOE->MODER |= (0x01<<22);GPIOE->OTYPER &= (~(0x1<<11));GPIOE->PUPDR &= (~(0x3<<22));GPIOE->OSPEEDR &= (~(0x3<<22));//PE12配置为输出、推挽输出、无上拉下拉、高速输出GPIOE->MODER &= (~(0x3<<24));GPIOE->MODER |= (0x01<<24);GPIOE->OTYPER &= (~(0x1<<12));GPIOE->PUPDR &= (~(0x3<<24));GPIOE->OSPEEDR &= (~(0x3<<24));//PE14配置为输出、推挽输出、无上拉下拉、高速输出GPIOE->MODER &= (~(0x3<<28));GPIOE->MODER |= (0x01<<28);GPIOE->OTYPER &= (~(0x1<<14));GPIOE->PUPDR &= (~(0x3<<28));GPIOE->OSPEEDR &= (~(0x3<<28));//PE13配置为输入GPIOE->MODER &= (~(0x3<<26));//sck、rck为低电平GPIOE->ODR &= (~(0x1<<12));GPIOE->ODR &= (~(0x1<<11));
}//spi写入数据
void spi_write(unsigned char data){for (int i = 0; i < 8; i++){//判断发送数据是1或0if(data & 0x01){GPIOE->ODR |= (0x1<<14);}else{GPIOE->ODR &= (~(0x1<<14));}//data右移1位data>>=1;//sck产生一个上升沿GPIOE->ODR &= (~(0x1<<12));delay_us();GPIOE->ODR |= (0x1<<12);delay_us();}
}

main.c

#include "gpio.h"
#include "led.h"
#include "uart4.h"
#include "keyip.h"
#include "iic.h"
#include "si7006.h"
#include "ap3216c.h"
#include "spi.h"/*
0:0xFC
1:0x60
2:0xDA
3:0xF2
4:0x66
5:0xB6
6:0xBE
7:0xE0
8:0xFE
9:0xF6
*/extern void printf(const char *fmt, ...);int main()
{unsigned char led[10] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6};spi_init();while (1){int i,j,k;for (i = 6; i >= 0; i--){for (j = 9; j >= 0; j--){for (k = 0; k < 20; k++){spi_write(0x80);spi_write(led[i]);// 数据刷新到锁存寄存器GPIOE->ODR &= (~(0x1 << 11));delay_us();GPIOE->ODR |= (0x1 << 11);delay_us();spi_write(0x40);spi_write(led[j]);// 数据刷新到锁存寄存器GPIOE->ODR &= (~(0x1 << 11));delay_us();GPIOE->ODR |= (0x1 << 11);delay_us();}}}return 0;}
}

实验效果

这篇关于GPIO模拟spi时序点亮数码管的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000654

相关文章

一文彻底搞懂Java 中的 SPI 是什么

《一文彻底搞懂Java中的SPI是什么》:本文主要介绍Java中的SPI是什么,本篇文章将通过经典题目、实战解析和面试官视角,帮助你从容应对“SPI”相关问题,赢得技术面试的加分项,需要的朋... 目录一、面试主题概述二、高频面试题汇总三、重点题目详解✅ 面试题1:Java 的 SPI 是什么?如何实现一个

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

Dubbo之SPI机制的实现原理和优势分析

《Dubbo之SPI机制的实现原理和优势分析》:本文主要介绍Dubbo之SPI机制的实现原理和优势,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Dubbo中SPI机制的实现原理和优势JDK 中的 SPI 机制解析Dubbo 中的 SPI 机制解析总结Dubbo中

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

hdu4431麻将模拟

给13张牌。问增加哪些牌可以胡牌。 胡牌有以下几种情况: 1、一个对子 + 4组 3个相同的牌或者顺子。 2、7个不同的对子。 3、13幺 贪心的思想: 对于某张牌>=3个,先减去3个相同,再组合顺子。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOExcepti