NRF51822自学笔记(二)PWM

本文记录了作者在学习NRF51822芯片时,针对PWM功能的探索过程。通过修改例程以适应NRF51822的BOARD_PCA10028配置,详细介绍了如何配置GPIO使其作为输出,并讲解了如何设置PWM参数,包括在PWM.H中追踪默认配置和理解工作模式。此外,还提及了中断服务函数在PWM应用中的作用。
摘要由CSDN通过智能技术生成

PWM这个东西我在32上用来电机调速过……通过改变高低电平占空比来实现一些功能。

keil的nrf51822目录下没有pwm.c..就在网上找了个pwm蜂鸣器的例程……看画风应该是官方的……吧……

例程的define为NRF51 SETUPA BOARD_PCA10028..修改一下,设置如下。



然后通过两个灯来实现一下两路pwm波……pin为20和21的LED_2和LED_3

先看main.c(非例程)
#include <stdbool.h>
#include <stdint.h>
#include "nrf_delay.h"
#include "nrf_gpio.h"
#include "boards.h"
#include "nrf_pwm.h"

/**
 * @brief Function for application main entry.
 */
int main(void)
{
    // Configure LED-pins as outputs
	  nrf_gpio_cfg_output(20);
	  nrf_gpio_cfg_output(21);
	
	  nrf_pwm_config_t pwm_config = PWM_DEFAULT_CONFIG;
    
          pwm_config.mode             = PWM_MODE_LED_255;
          pwm_config.num_channels     = 2;
          pwm_config.gpio_num[0]      = 21;
          pwm_config.gpio_num[1]      = 20;
	  nrf_pwm_init(&pwm_config);
	  nrf_pwm_set_value(0,20);
	  nrf_pwm_set_value(1,255);
}

第一步把要操作的灯的pin配置一下,设置成outputs

第二步用一个结构体来设置一下PWM的一些参数。

          追踪一下PWM_DEFAULT_CONFIG,发现它在PWM.H里

#define PWM_DEFAULT_CONFIG  {.num_channels   = 2,                \
                             .gpio_num       = {8,9,10,11},         \
                             .ppi_channel    = {0,1,2,3,4,5,6,7},    \
                             .gpiote_channel = {2,3,0,1},          \
                             .mode           = PWM_MODE_LED_100};
然后配置mode为 PWM_MODE_LED_255,两个通道,两个通道的pin为21和20。把结构体地址传给初始化函数,初始化之后调用nrf_pwm_set_value()来设置一下占空比。

追踪一下那个mode

typedef enum
{
    PWM_MODE_LED_100,   // 0-100 resolution, 156Hz PWM frequency, 32kHz timer frequency (prescaler 9)
    PWM_MODE_LED_255,   // 8-bit resolution, 122Hz PWM frequency, 32kHz timer frequency (prescaler 9)
    PWM_MODE_LED_1000,  // 0-1000 resolution, 125Hz PWM frequency, 250kHz timer frequency (prescaler 6)
    
  
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值