昨天我们成功将脚位设定成输出模式,现在我们将PB0脚位设定为输出模式。会选PB0是因为STM32F429ZI这块晶片的PB0脚位与USER LED的正极是连通的。因此只要将PB0设为输出,LED就会亮,可以很直观的判断是否成功输出。
这块开发版上有3个LED分别对应到的脚位为PB0、PB7、PB14
继上次介绍HAL_Delay()後,我们来认识学习STM的第二个函式吧~
这个函式的功能就是Arduino的digitalWrite()
HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_PIN, GPIO_PinState PinState);
这是这个函式的API,不要看到一堆不认识的型态就害怕,举个例子你就明白了
假设你要让PB0脚位输出高电为,第一个参数就放GPIOB,就是"GPIO"+脚位的英文。第二个参数放GPIO_PIN_0,即"GPIO_PIN_" +第几号脚位,最後一个参数如果你要输出HIGH,就放GPIO_PIN_SET;LOW就放GPIO_PIN_RESET,很简单吧。
完整的程序码如下
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
搭配我们先前学过的HAL_Delay()函数
/* USER CODE BEGIN WHILE */
while (1) {
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_Delay(500);
}
/* USER CODE END 3 */
就可以让LED以1Hz的频率闪烁罗~
这个程序就像是学程序语言第一支程序一定都是在萤幕上输出HelloWorld一样呢
我们再来介绍今天的第二个语法吧
HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
这个函式与刚刚的很像,只不过这个会根据你现在的状况来做输出,每次都输出与现在状态相反的状态,例如现在是HIGH则下次输出LOW,反之亦然。
於是我们可以再更精简我们的程序码
/* USER CODE BEGIN WHILE */
while (1) {
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
HAL_Delay(500);
}
/* USER CODE END 3 */
学习完输出,我们来学习输入
要注意的是我们要把脚位设定成输入模式(刚刚是输出模式)
将.ioc档内配置将PF13脚位配置成输入模式(GPIO_Input),这样就完成设定啦
我们可以设计一个简单的线路,将刚刚已经设定好的PB0以杜邦线连接到PF13,这样我们就可以用PF13来侦测PB0所输出的脚位啦
接下来介绍今天最後一个语法
HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
这个函式可以读取现在输入是高电位还是低电位,直接来个范例吧
/* USER CODE BEGIN WHILE */
while (1) {
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
state = HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_13);
HAL_Delay(500);
}
/* USER CODE END 3 */
记得在全域变数宣告一个整数变数state喔
接着再利用我们之前提到的小工具-现场表达式,就可以看到state的值一直在1和0这两个数字交替变换罗
今天总共介绍了3个函式分别是
<<: 不只懂 Vue 语法:如何使用 v-model 实现父子元件传递资料?
>>: 自动化测试,让你上班拥有一杯咖啡的时间 | Day 6 - 使用 Custom Commands
我们要来介绍到元件与监听事件,首先,先从取得画面元件说起,简单来说,Android主程序码跟画面的x...
哈罗哈罗~我们的铁人赛也快到了尾声,今天要给大家介绍一个 template,可以让我们在制作的时候更...
// Thats proof of work 【前言】 今天终於来到这个 Project 测试的最...
本文内容 阅读有关 Angular 中有 ngFor 语法的笔记内容。 ngFor 在干嘛的? 它用...
What and Why 在串接对方 webhooks 时通常会看到文件上提到 signature「...