nrf51822自学笔记(一) 流水灯
2016-01-26 15:42
330 查看
最近在学nrf51822这个板子,下载程序点灯啥的零零碎碎弄了一天……例程blinky_example中包含了gpio.h和delay.c
看main.c之前我先看了这两个,例程里应用了一个简单不精确的延时函数,用循环内延时微秒函数实现延时毫秒,挺有意思的……
pin 19。
STATE_MASK=0x01,&STATE_MASK即为取其最后一位,所以在这个条件下,修改LED_START和LED_STOP的值(修改初始化范围)最多只能点亮18,19两个灯,若要点亮其他灯(最多仍然两个)则需修改LED_OFFSET的值,来改变你第一个要点亮的灯。
若要点亮多个灯则需修改STATE_MASK的值,若改为0x07即0111,会看到五个灯流水点亮0.0~
看main.c之前我先看了这两个,例程里应用了一个简单不精确的延时函数,用循环内延时微秒函数实现延时毫秒,挺有意思的……
void nrf_delay_ms(uint32_t volatile number_of_ms) { while(number_of_ms != 0) { number_of_ms--; nrf_delay_us(999); } }
然后gpio.h里包含初始化port和pin,设置output,input,写入读取等函数。
下面是main函数
int main(void) { uint8_t output_state = 0; // Configure LED-pins as outputs nrf_gpio_range_cfg_output(LED_START,LED_STOP); while(true) { nrf_gpio_port_write(LED_PORT, 1 << (output_state + LED_OFFSET)); output_state = (output_state + 1) &STATE_MASK; nrf_delay_ms(100); } }LED_OFFSET=2,也就是说nrf_gpio_port_write()这个函数的初始写入值是1<<2=100(二进制),即初始化的第一个灯是gpio pin 18,写入位置为LED_PORT即NRF_GPIO_PORT_SELECT_PORT2//(GPIO pin 16-23)(宏定义)。若无STATE_MASK,每经历一次while循环output_state的值加1,第二次循环中便有1<<3=1000,初始化了第二个灯gpio
pin 19。
STATE_MASK=0x01,&STATE_MASK即为取其最后一位,所以在这个条件下,修改LED_START和LED_STOP的值(修改初始化范围)最多只能点亮18,19两个灯,若要点亮其他灯(最多仍然两个)则需修改LED_OFFSET的值,来改变你第一个要点亮的灯。
若要点亮多个灯则需修改STATE_MASK的值,若改为0x07即0111,会看到五个灯流水点亮0.0~
相关文章推荐
- android常用的一些命令,备份避免遗失
- oracle中中英文段落划分实现
- 36.Examine the following SQL commands:
- 猫猫学Swift之Playground初次感受
- Bootstrap-datepicker 用法
- Nginx配置文件详细说明
- 和为S的连续正数序列
- javascript格式化字符串
- 超好看的下拉刷新动画Android代码实现
- 让ICON生动起来 纯CSS实现带动画的天气图标
- 给oracle写自增序列
- 结构体数组的输入输出函数
- 【HDU】 3308 LCIS
- JS与JAVA获取xml格式的字符串指定的值
- 杭电2674 N!Again
- Android 仿秒拍,微信录制短视频
- git config 配置
- RequestMapping
- jQuery选择器中的包含关系
- 允许或禁止未知来源apk的安装