在线时间828 小时
UID3079326
注册时间2015-2-11
NXP金币28
TA的每日心情 | 奋斗 2025-5-7 09:07 |
---|
签到天数: 353 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 5785
- 最后登录
- 2025-5-7
|
本帖最后由 wambob 于 2017-4-8 20:31 编辑
开发板上电后。除了电源指示灯外。绿色的LD4、LD6、LD7亮。振动板子或大声说话可见LD8微闪、亮度低的红色,不难想象,这个是数字麦克风的指示灯。另外红色的LD10、LD11亮。
串口输出
打开工程,在main函数里对照串口输出可以看到打印信息
接着
先看看按键和LED原理图
在主函数中,按下任意一个按键。会调用函数led_on(2);点亮板上的LD9。
追踪到此函数定义处
- void led_on(uint8_t num)
- {
- }
复制代码 参数2传递进去给GPIO结构类型的变量赋值,值是LED_GPIO_ON[2],多少呢?把参数替换成2.
- GPIO->B[LED_GPIO_PORT[2]][LED_GPIO_PIN[2]] = LED_GPIO_ON[2];
复制代码 值在常量数组里
- const uint8_t LED_GPIO_PORT[LED_NUM] = { 0, 0, 0, 0, 0, 0, 0, 0};
- const uint8_t LED_GPIO_PIN [LED_NUM] = {15, 19, 21, 22, 25, 26, 29, 30};
- const uint8_t LED_GPIO_ON [LED_NUM] = { 1, 1, 1, 1, 0, 0, 0, 0};
- const uint8_t LED_GPIO_OFF [LED_NUM] = { 0, 0, 0, 0, 1, 1, 1, 1};
复制代码 不看参考手册,不难看出这个LED由GPIO0的21脚控制。
- LED_GPIO_ON[2]==1;
- LED_GPIO_PORT[2]==0;
- LED_GPIO_PIN[2]==21;
复制代码
GPIO0 21脚标号为LED2。LED2控制LD9,高电平点亮。
再来看看
这个寄存器在参考手册中
每个GPIO引脚在该地址范围内都拥有一个字节寄存器。软件通常读取和写入字节来访问各个引脚,而且能读取或写入半字来识别或设置 2 个引脚的状态,读取或写入字来识别或设置 4 个引脚的状态。
读:引脚低电平时0,高电平时0XFF。读取的值反映了引脚 的状态,不受方向、屏蔽或其他功能的影响,除了引脚配置为模拟 I/O 始终读取0外。
写:0清除输出位。0x01至0xFF设置输出位。上面那句就是设置GPIO0的第21引脚位输出位。
为了进一步理解,编译工程进入调试界面
|
|