主函数
#include "ti_msp_dl_config.h"
volatile unsigned int delay_times = 0;
//搭配滴答定时器实现的精确ms延时
void delay_ms(unsigned int ms)
{
delay_times = ms;
while( delay_times != 0 );
}
int main(void)
{
SYSCFG_DL_init();
while (1)
{
//如果读取到的引脚值大于0,说明PA18引脚为高电平
if( DL_GPIO_readPins(KEY_PORT, KEY_PIN_18_PIN) > 0 )
{
DL_GPIO_setPins(LED1_PORT,LED1_PIN_14_PIN); //LED控制输出高电平
}
else//如果PA18引脚为低电平
{
DL_GPIO_clearPins(LED1_PORT,LED1_PIN_14_PIN);//LED控制输出低电平
}
}
}
void SysTick_Handler(void)
{
if( delay_times != 0 )
{
delay_times--;
}
}
使用函数 uint32_t DL_GPIO_readPins(GPIO_Regs* gpio, uint32_t pins)
可以读取引脚的状态。
需要输入两个参数:
gpio:
读取的GPIO端口。L1306芯片只有GPIOA端口,这里选择GPIOA
。
pins:
读取的引脚号。根据我们sysconfig配置的引脚名称,这里写入的是KEY_PIN_18_PIN
。
它会返回的参数:
类型为uint32_t
,返回的是对应引脚的状态位。比如以PA18为例。当PA18引脚检测到低电平时,返回的值是0;当PA18引脚检测到高电平时,对应的32位寄存器中PA18的位将会被置1,返回的值为0x40000,换为2进制就是:100 0000 0000 0000 0000
从代码一直查找到用户手册的寄存器,可以知道,二进制的 100 0000 0000 0000 0000 对应的就是PA18引脚。数据手册中,是从0开始往左边算,二进制的100对应的就是PA2号引脚为高电平,10000对应的就是PA4引脚为高电平。