单片机学习记录---基于TM4C123GH6PM芯片

 初始化,设置时钟--使能端口--设置输出

//设置系统时钟为50MHz
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
// 端口GPIO F使能,F0引脚解锁NMI功能
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); // 使能 GPIO F模块
// 设置GPIO方向
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3); // PF0设置为输出

中断初始化

	GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4); // PF4设置为输入         
	GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_LOW_LEVEL);//设置GPIOPF4中断
    GPIOIntEnable(GPIO_PORTF_BASE, GPIO_INT_PIN_4); // 使能KEY所在管脚的中断

	GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3); // PA2设置为输入         
	GPIOIntTypeSet(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3, GPIO_LOW_LEVEL);//设置GPIOPF4中断
    GPIOIntEnable(GPIO_PORTA_BASE, GPIO_INT_PIN_2|GPIO_INT_PIN_3); // 使能KEY所在管脚的中断
	
	IntEnable(INT_GPIOF);// 使能GPIOF端口总中断
	IntEnable(INT_GPIOA);// 使能GPIOF端口总中断
	IntMasterEnable(); // 使能处理器总中断

中断处理子函数,需要在startup文件(启动文件)里自定义为EXTERN

EXTERN  GPIO_PORTF_ISR
DCD     GPIO_PORTF_ISR              ; GPIO Port A
void GPIO_PORTF_ISR(void)//中断处理子函数,需要在startup文件里自定义为EXTERN
{
    unsigned char ucVal;
    unsigned long ulStatus;//中断状态标识
	
    ulStatus = GPIOIntStatus(GPIO_PORTF_BASE, true); // 读取中断状态
    GPIOIntClear(GPIO_PORTF_BASE, GPIO_INT_PIN_4); // 清除中断状态,重要
	
    switch (ulStatus) // 如果KEY的中断状态有效
    {
		case 0x10:
			ucVal = GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_1); // 翻转LED
			GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1, ~ucVal);//~表示取反
			SysCtlDelay(1000); // 延时,消除按键抖动
			while (GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4) == 0x00); // 等待KEY抬起
				SysCtlDelay(1000); // 延时,消除松键抖动
				break;
    }
}

串口通信

SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); //串口外设使能
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); //GPIO端口使能    
    
GPIOPinConfigure(GPIO_PA0_U0RX);//串口所用的GPIO引脚配置
GPIOPinConfigure(GPIO_PA1_U0TX);
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
	
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 9600,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));//配置UART 参数
	
UARTCharPut(UART0_BASE, '!');//发送‘!’字符
cThisChar=UARTCharGet(UART0_BASE);//将串口数据存储到cThisChar变量中

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值