TI盘古引脚说明和函数调用

 void ConfigureUART(void)//串口初始化

    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);// Enable the GPIO Peripheral used by the UART.   //使能GPIOA的时钟
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);// Enable UART0  使能串口0
    ROM_GPIOPinConfigure(GPIO_PA0_U0RX);// Configure GPIO Pins for UART mode.  配置串口的GPIO的RX引脚
    ROM_GPIOPinConfigure(GPIO_PA1_U0TX);    //配置串口的TX引脚
    ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);  //配置GPIO的端口A 引脚0与引脚1
    // Use the internal 16MHz oscillator as the UART clock source.  //使用内部16HZ振荡器作为串口时钟源
    // Initialize the UART for console I/O.  初始化控制台IO的UART
    UARTStdioConfig(0, 115200, 16000000);  //串口初始化配置    第一个是控制串口的端口数  第二个是传输速率 115200  第三个是16MHZ内部震荡
        UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);//第一个是时钟源基质   第二个是波特时钟源
}

1. 时钟篇

SysCtlClockSet();
如:SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |SYSCTL_OSC_MAIN);

//函数意义:时钟选择;各参数:分频系数/有没有用PLL/用的什么晶振/时钟源

//分频系数SYSCTL_SYSDIV_1,SYSCTL_SYSDIV_2, SYSCTL_SYSDIV_3, …
SYSCTL_SYSDIV_64

//有没有用PLL:SYSCTL_USE_PLL ,SYSCTL_USE_OSC.

//外部晶振:(LaunchPad是16MHz)

SYSCTL_XTAL_4MHZ, SYSCTL_XTAL_4_09MHZ, SYSCTL_XTAL_4_91MHZ,

SYSCTL_XTAL_5MHZ, SYSCTL_XTAL_5_12MHZ, SYSCTL_XTAL_6MHZ,

SYSCTL_XTAL_6_14MHZ, SYSCTL_XTAL_7_37MHZ, SYSCTL_XTAL_8MHZ,

SYSCTL_XTAL_8_19MHZ, SYSCTL_XTAL_10MHZ, SYSCTL_XTAL_12MHZ,

SYSCTL_XTAL_12_2MHZ, SYSCTL_XTAL_13_5MHZ, SYSCTL_XTAL_14_3MHZ,

SYSCTL_XTAL_16MHZ, SYSCTL_XTAL_16_3MHZ, SYSCTL_XTAL_18MHZ,

SYSCTL_XTAL_20MHZ, SYSCTL_XTAL_24MHZ, or SYSCTL_XTAL_25MHz.

//时钟源(这个暂时没明白每个的准确指代…那个int是什么意思没搞懂):SYSCTL_OSC_MAIN,

SYSCTL_OSC_INT, SYSCTL_OSC_INT4, SYSCTL_OSC_INT30, or SYSCTL_OSC_EXT32.

·

SysCtlPeripheralEnable
如:SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

//使能外设,不仅是GPIO,还有串口定时器等

2. GPIO篇
·

GPIOPinTypeGPIOOutput
如:GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2);

//GPIO输出配置:port主地址+偏移量

·

GPIOPinWrite
如:GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 1);

//显然是控制GPIO输出高低电平

·

SysCtlPeripheralReady
//检测外设时钟配置好没:一般这么用↓

while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOF))
{ }

·

GPIOPinTypeGPIOInput
如:GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4);

//配置IO口输出

·

GPIOPadConfigSet
如:GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);

//输出设置:

//GPIO_PIN_TYPE_STD_WPU弱上拉

GPIO_PIN_TYPE_STD_WPD弱下拉

GPIO_PIN_TYPE_STD为推挽引脚

GPIO_PIN_TYPE_OD为开漏

GPIO_PIN_TYPE_ANALOG模拟输入

GPIO_PIN_TYPE_WAKE_HIGH高电平唤醒

GPIO_PIN_TYPE_WAKE_LOW低电平唤醒

·

GPIOPinRead
GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4);

//读GPIO

·

3.其他
·

FPULazyStackingEnable();
FPUEnable();
//使能浮点单元,TM4有专门的FPU所以使能了这个可以给之后的浮点计算减少CPU负担

·

SysCtlDelay(SysCtlClockGet() / n / 3);
//延时,延时时间=1/n秒

//解释: TI论坛上的解释粘过来:
SysCtlDelay(SysCtlClockGet()/1000/3) 这个函数执行的结果就是延时1ms,无论你的系统时钟是多少,当然你的系统时钟是不能低于3K的。 SysCtlClockGet()函数返回的值是系统的频率,也就是1S钟的CLOCK个数,这个个数/1000就是1ms系统时钟的个数,由于SysCtlDelay函数一个循环判断执行需要3个CLOCK时钟,所以系统时钟/3000就表示系统执行1ms的时间。 由此可以看出这个函数执行的结果就是延迟1ms. 在不同的系统时钟下,调用该函数都是延迟1ms.

·

UARTprintf(“Hello,world!\n”);
(这个在uartstdio.c中,非官方库,我是在examples看到这个的)

//类似printf,和原子给32的那个printf函数一个意思,默认串口1输出

//记得先把串口1配置好再用!

//要修改默认输出串口:uartstdio.c文件126行可以修改

//也可以直接用下面函数替代,这样就不用引用uartstdio.c啦(毕竟这个不是TI官方库),参数:字符串地址、字节数

void UARTSend(const uint8_t *pui8Buffer, uint32_t ui32Count)
{
// Loop while there are morecharacters to send.
while(ui32Count–)
{
// Write the next characterto the UART.
ROM_UARTCharPutNonBlocking(UART0_BASE,*pui8Buffer++);
}
}

如:UARTSend((uint8_t *)"\033[2JEnter text: ",16);
 

重映射printf函数

int fputc(int ch, FILE *f){UARTCharPut(UART0_BASE,ch);    return (ch);}//重新映射printf函数
int fgetc(FILE *f) {int ch=UARTCharGet(UART0_BASE);    return (ch);}

int main(void)      使能主函数
{
        ROM_FPUEnable();//使能浮点单元
        ROM_FPULazyStackingEnable();//浮点延迟堆栈,减少中断响应延迟 
    //时钟选择  各个参数     分频系数/有没有用到PLL/用的什么晶振/时钟源(不知道是啥时直接通用场景)/
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |SYSCTL_OSC_MAIN);//配置系统时钟
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//使能外设不只是GPIO还有串口   但是这个是使能GPIOF 是为了后面的RGB灯点亮  
    //三种原色灯   F4 F5 F6
    ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_5);//红色
        ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_6);//绿色
      ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_4);//蓝色
    ConfigureUART();//初始化串口0
    PrintfLogo();//串口打印版本信息
    while(1)
    {
            GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_5, 0);//置低位点亮
            SysCtlDelay(SysCtlClockGet() / 20);    
            GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_5, GPIO_PIN_5);//置高位熄灭
            SysCtlDelay(SysCtlClockGet() / 20);

            GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_6, 0);//置低位点亮
            SysCtlDelay(SysCtlClockGet() / 20);    
            GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_6, GPIO_PIN_6);//置高位熄灭
            SysCtlDelay(SysCtlClockGet() / 20);

            GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_4, 0);//置低位点亮
            SysCtlDelay(SysCtlClockGet() / 20);      
            GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_PIN_4);//置高位熄灭
            SysCtlDelay(SysCtlClockGet() / 20);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值