nRF52832-GPIO输出
环境介绍
PC环境:Windows
IDE环境:ARM-MDK5
SDK环境:nRF5 SDK v15.1.0
硬件环境:nRF52832开发板(外设配置与官方pca10040开发板一致)
使用官方的blinky例程,该位于nRF5_SDK_15.1.0_a8c0c4d\examples\peripheral\blinky\pca10040\s132\arm5_no_packs
目录下。
注:pca10040代表nRF52832例程,s132代表基于协议栈的工程,ARM-MDK5选择arm5_no_packs
GPIO输出配置
打开工程并打开main.c文件,可以看到mian函数内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15int main(void)
{
/* Configure board. */
bsp_board_init(BSP_INIT_LEDS);
/* Toggle LEDs. */
while (true)
{
for (int i = 0; i < LEDS_NUMBER; i++)
{
bsp_board_led_invert(i);
nrf_delay_ms(500);
}
}
}
该例程是基于pca10040(nRF52832)开发板的LED例程,实现LED1~LED4依次闪烁的功能,下面根据LED的GPIO配置来配置P25和P26引脚输出高低电平,在main.c中添加自定义函数,如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14/**
* @函数名 Custom_Init
* @功 能 用户自定义GPIO口初始化
* @参 数 无
* @返回值 无
*/
void Custom_Init(void)
{
nrf_gpio_cfg_output(25); //初始化P25引脚,配置为输出模式
nrf_gpio_cfg_output(26); //初始化P26引脚,配置为输出模式
nrf_gpio_pin_write(25, 0); //P25引脚输出低电平
nrf_gpio_pin_write(26, 0); //P26引脚输出低电平
}
把该函数在main函数中初始化,然后在主函数循环中翻转P25和P26引脚状态,main函数如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17int main(void)
{
/* Configure board. */
bsp_board_init(BSP_INIT_LEDS);
/* Toggle LEDs. */
while (true)
{
for (int i = 0; i < LEDS_NUMBER; i++)
{
bsp_board_led_invert(i);
nrf_gpio_pin_toggle(25); //翻转P25引脚状态
nrf_gpio_pin_toggle(26); //翻转P26引脚状态
nrf_delay_ms(500);
}
}
}
使用示波器检测P25和P26引脚状态,如下图:
资源参考
官方文档:http://infocenter.nordicsemi.com/index.jsp
例程说明位于官方文档目录:Software Development Kit > nRF5 SDK > nRF5 SDK v15.1.0 > Examples > Hardware peripheral examples > Blinky Example
GPIO相关API函数说明位于官方目录:Software Development Kit > nRF5 SDK > nRF5 SDK v15.1.0 > API Reference > Peripheral drivers > Peripheral drivers > GPIO
代码烧录
- 擦除FLASH
- 烧写SoftDevice
- 烧写应用程序
具体操作参考:nRF52832-程序下载