📄 main.c
字号:
// 基于《Stellaris外设驱动库》的SSI例程:通过75HC595控制1位共阳式静态数码管
// 包含必要的头文件
#include <hw_types.h>
#include <hw_memmap.h>
#include <hw_sysctl.h>
#include <hw_gpio.h>
#include <hw_ssi.h>
#include <sysctl.h>
#include <gpio.h>
#include <ssi.h>
#include "LM3S1138_PinMap.H"
// 将较长的标识符定义为较短的形式
#define SysCtlPeriEnable SysCtlPeripheralEnable
#define SysCtlPeriDisable SysCtlPeripheralDisable
#define GPIOPinTypeIn GPIOPinTypeGPIOInput
#define GPIOPinTypeOut GPIOPinTypeGPIOOutput
// 定义按键
#define KEY_PORT SYSCTL_PERIPH_GPIOG
#define KEY_PIN GPIO_PORTG_BASE , GPIO_PIN_5
#define KeyGet() GPIOPinRead(KEY_PIN)
// 防止JTAG失效
void jtagWait(void)
{
SysCtlPeriEnable(KEY_PORT); // 使能按键所在的GPIO端口
GPIOPinTypeIn(KEY_PIN); // 设置按键所在管脚为输入
if ( KeyGet() == 0x00 ) // 如果有键按下,则进入
{
for (;;); // 死循环,以等待JTAG连接
}
SysCtlPeriDisable(KEY_PORT); // 禁止按键所在的GPIO端口
}
// 延时
void Delay(unsigned long ulVal)
{
while ( --ulVal != 0 );
}
// SSI初始化
void ssiInit(void)
{
unsigned long ulBitRate = SysCtlClockGet() / 3;
SysCtlPeriEnable(SSI0CLK_PERIPH); // 使能SSI模块所在的GPIO端口
SysCtlPeriEnable(SYSCTL_PERIPH_SSI); // 使能SSI模块
GPIOPinTypeSSI(SSI0CLK_PORT , SSI0CLK_PIN | // 将相关GPIO设置为SSI功能
SSI0FSS_PIN |
SSI0RX_PIN |
SSI0TX_PIN);
SSIConfig(SSI_BASE , // 配置SSI模块
SSI_FRF_MOTO_MODE_0 , // Freescale格式,模式0
SSI_MODE_MASTER , // 主模式
ulBitRate , // 设置位速率
8); // 设置数据宽度
SSIEnable(SSI_BASE); // 使能SSI收发
}
// 将数据通过静态数码管显示
void dataDisplay(unsigned char ucData)
{
const unsigned char ucTable[16] = // 定义数码管显示数据
{
0x3F , 0x06 , 0x5B , 0x4F , 0x66 , 0x6D , 0x7D , 0x07 ,
0x7F , 0x6F , 0x77 , 0x7C , 0x39 , 0x5E , 0x79 , 0x71
};
unsigned char t = ~ucTable[ucData & 0x0F]; // 若是共阴式数码管则不必取反
SSIDataPut(SSI_BASE , t); // 通过SSI输出数据到74HC595
}
// 主函数(程序入口)
void main(void)
{
unsigned char i;
jtagWait(); // 防止JTAG失效,重要!
SysCtlLDOSet(SYSCTL_LDO_2_50V); // 设置LDO输出电压
SysCtlClockSet(SYSCTL_USE_OSC | // 系统时钟设置,采用主振荡器
SYSCTL_OSC_MAIN |
SYSCTL_XTAL_6MHZ |
SYSCTL_SYSDIV_1);
ssiInit(); // SSI初始化
for (;;)
{
for ( i = 0; i < 16; i++ ) // 在数码管上循环显示数字
{
dataDisplay(i);
Delay(750000UL);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -