工具/软件:Starterware
尊敬的先生:
我们正在使用设计的电路板和基本 GPIO 代码、但我们正在发现同一条线的复位行为不同。
1我们使用1S 延迟,然后 LED 恰好在1S 之后闪烁。
2当我们应用复位时、它将闪烁时间更改为400ms、如 CRO 中所示。
我们是该控制器的新手、我在 CCS 示例中发布了我使用的代码。
#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "drivers/pinout.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/ssi.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#include "drivers/buttons.h"
#define NUM_SSI_DATA 3 //要发送和接收的字节数。
uint32_t g_ui32SysClock;//系统时钟速率、单位为 Hz。
#ifdef 调试
无效
_error__(char * pcFilename、uint32_t ui32Line)
{
}
#endif
void delayms (int ms){
SysCtlDelay((SysCtlClockGet()/(3*1000)*ms );
}
无效
InitConsole (空)
{
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ);//启用用于 UART0引脚的 GPIO 端口 A。
GPIOPinConfigure (GPIO_PJ0_U3RX);//配置 UART0引脚 A0。
GPIOPinConfigure (GPIO_PJ1_U3TX);//配置 UART0引脚 A1。
SysCtlPeripheralEnable (SYSCTL_Periph_UART3);//启用 UART0以便我们可以配置时钟。
UARTClockSourceSet (UART3_base、UART_CLOCK _PIOSC);//使用内部16MHz 振荡器作为 UART 时钟源。
GPIOPinTypeUART (GPIO_PORTJ_BASE、GPIO_PIN_0 | GPIO_PIN_1);//配置 GPIO 端口 A 引脚
UARTStdioConfig (0、115200、16000000);//初始化控制台 I/O 的 UART
}
内部
main (空)
{
volatile uint32_t ui32Loop;
uint32_t pui32DataTx[NUM_SSI_DATA];
uint32_t pui32DataRx[NUM_SSI_DATA];
uint32_t ui32Index;
G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |//从 PLL 以120MHz 运行。
SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ);
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOQ));
GPIOPinTypeGPIOOutput (GPIO_PORTQ_BASE、GPIO_PIN_1_GPIO_PIN_0);
PinoutSet (false、false);//配置器件引脚。
InitConsole();//设置串行控制台以用于显示消息。
SysCtlPeripheralEnable (SYSCTL_Periph_GPION);//启用用于板载 LED 的 GPIO 端口。
SysCtlPeripheralEnable (SYSCTL_Periph_SSI3);//必须启用 SSI0外设才能使用。
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);//需要启用 GPIO 端口 A 以便可以使用 SSI 引脚。
GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_1);//为 LED 启用 GPIO 引脚(PN0)。
GPIOPinConfigure (GPIO_PF3_SSI3CLK);//在 PA2上配置 SSI SCLK
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_2);//~CS -将其配置为 GPIO 输出
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、GPIO_PIN_1);//~CS -将其设置为逻辑高电平
GPIOPinConfigure (GPIO_PF1_SSI3XDAT0);//在 PA4上配置 MOSI
GPIOPinConfigure (GPIO_PF0_SSI3XDAT1);//在 PA5上配置 MISO
GPIOPinTypeSSI (GPIO_PORTF_BASE、GPIO_PIN_0| GPIO_PIN_1 | GPIO_PIN_3);//配置 SSI 引脚的 GPIO 设置。
SSIConfigSetExpClk (SSI3_base、g_ui32SysClock、SSI_FRF_MOTO_MOTO_MODE_0、//为 SPI 主控模式配置和启用 SSI 端口。 使用 SSI3、
SSI_MODE_MASTER、1000000、8);//系统时钟电源、空闲时钟电平低电平和低电平有效时钟输入
//飞思卡尔 SPI 模式、主控模式、1MHz SSI 频率和8位数据。
SSIEnable (SSI3_base);//启用 SSI0模块。
//
//初始化要发送的数据。
//
pui32DataTx[0]= 0x30;//读取模式
pui32DataTx[1]= 0x5A;//要读取的寄存器地址
pui32DataTx[2]= 0x55;//虚拟字节生成 SCLK 以从 MISO 读取1个字节
//
//发送3个字节的数据。
//
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、0);//~CS -将其设置为逻辑低电平-开始传输
SysCtlDelay(1);
for (ui32Index = 0;ui32Index < NUM_SSI_DATA;ui32Index++)
{
SSIDataPut (SSI3_base、pui32DataTx[ui32Index]);
SSIDataPut (SSI3_base、pui32DataRx[ui32Index]);
}
SysCtlDelay(1);
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、0x1);//~CS -将其设置为逻辑高电平-传输结束*/
while (1)
{
GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_1、GPIO_PIN_1);
delayMS (10000);//延迟15ms
GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_1、0x0);
delayMS (10000);//延迟15ms
UARTprintf ("正在检查 TX 和 RX 数据...\n");//检查 pui32DataRx 的内容
UARTprintf ("i\TTX\TRx\n");
UARTprintf ("------------------------ \n");
for (ui32Index = 0;ui32Index < NUM_SSI_DATA;ui32Index++)
{
UARTprintf ("%d\t'%c'\t'%c'\n"、ui32Index、
*(pui32DataTx+ui32Index)、
*(pui32DataRx+ui32Index));
GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_0、GPIO_PIN_0);
}
}
}
请就此问题提出建议,因为我们也无法就其他议定书开展工作。
注:控制器电源正常,为3.3V。
此致、
Sateesh