蓝牙4.0入门(2)开始程序编写(二)一般单片机程序的编写

2.2一般程序的编写

可参考的例程如下:

大D出品

0内部Flash编程和UICR用户信息配置寄存器配置.pdf

1CLOCK 系统时钟.pdf

2跑马灯.pdf

3Helloworld.pdf

4radio.pdf

5lowenergy.pdf

6MPU6050.pdf

7interrupt.pdf

8ble _1.pdf

8ble_2.pdf

9安卓app.pdf

清风出品

应用程序篇--第二节:系统时钟设置.pdf

应用程序篇--第三节:按键扫描.pdf

应用程序篇--第四节:按键中断.pdf

应用程序篇--第五节:RTC的使用.pdf

应用程序篇--第六节:time定时器定时.pdf

应用程序篇--第七节:串口UART的使用.pdf

应用程序篇--第八节:串口UART中断.pdf

应用程序篇--第九节:PPI模块的使用.pdf

 

建议学习例程步骤(纯单片机控制):

 

1. IO控制学习-à2.系统时钟-à3.按键中断-à4.定时器-à5.串口-à6.ppi模块-à7.iictwi

 

主要参考例程:(官方的)

blinky_example

ppi_example

timer_example

uart_example

twi_sw_master_example

temperature_example(以后看,关于温度传感器)

主要学习思路:

Ø  看例程

Ø  看芯片手册(nRF51_Series_Reference_Manual_v2.1.pdf)两个方面:方框图(吐槽一句方框图没ti的好),寄存器说明

举个栗子:

温度传感器temperature_example

首先可以打开例程和芯片手册,可以看到有以下寄存器


在nrf51822体系里,寄存器分三种,tasks,events,registers。task是执行任务的,events是报告各种状态,类似触发中断.


Temp寄存器是储存收集到数值

nrf_temp_init(); 

while(1)

{    

 NRF_TEMP->TASKS_START= 1;

 while (NRF_TEMP->EVENTS_DATARDY== 0) { }

        NRF_TEMP->EVENTS_DATARDY= 0;

        temp =(nrf_temp_read()/4);

        temp=temp*0.6904-0.74;

       NRF_TEMP->TASKS_STOP = 1; /** Stop the temperature measurement.

        nrf_delay_ms(500);

    }

}

}

 

temp=temp*0.6904-0.74;这个是由于按照官方的直接得到的误差太大了,根据实际测得温度值(万用表)和temp = (nrf_temp_read()/4);直接得出的temp用                                                                                     excel求趋势线得出的。

下面简单说下一些其他模块的细节:

1.  Uart:nrf51822默认配置的uart引脚是有四个,RXD;TXD;CTS;RTS.在simple_uart.c里提供调用方法。另外这些引脚都是可以自己设置的,有没有类似FPGA,是不是很方便!!

2.  GPIOTE:这个功能是通过IO的event来触发tasks的。

Tasks有三种状态:set,clear,toggle。

Event也有三种Risingedge;Falling edge;Any change

主要寄存器有:tasks:OUT[0] ,OUT[1],OUT[2] ,OUT[3]

              Event:IN[0],IN[1],IN[2],IN[3]

主要结合ppi功能

3.  
定时器:

 

 

 

主要寄存器

通过exanple: timer_example

里面需要注意的问题: 频率 (rtc不同)

  一般设置步骤:设置时钟—>设置mode(timer还是counter)->然后设置分频—>设置bitmode(需要注意的是总共有三个定时器,timer0是32bit,timer1,2是16bit)—>清定时器。

当设置的定时次数溢出了,将从溢出后重新开始计数。就比如例程中bit16位,最多定时2097,当

#define TIMER_DELAY_MS3  (3000UL)  /**< Timer Delay in milli-second*/

时只会定时903.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值