51822代码篇1
来源:互联网 发布:数据修炼系统 编辑:程序博客网 时间:2024/06/06 01:26
之所以来细致分析51822的程序,第一个原因是因为他的历程在C语言的运用上,有很多
漂亮的地方,作为一个M0的的单片机,它没有足够的资源跑操作系统,但他的软件结构,比
我们平时遇见的一个while大循环,和几个定时器的分段要美妙许多。第二个原因是不得不承认
nordic的SDK总是把代码格式写的非常乱且没有太多解释,不做一些笔记的话很难一气呵成的
读下去。
先来看51822的main函数
int main(void)
{
// Initialize
leds_init(); LED初始化
timers_init(); 定时器初始化
gpiote_init(); GPIOE初始化
buttons_init(); 按键初始化
ble_stack_init(); BLE协议栈初始化
bond_manager_init(); 连接管理初始化
gap_params_init(); gap层参数初始化
advertising_init(BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE); 广播初始化
services_init(); 服务初始化
conn_params_init(); 连接参数初始化
sec_params_init(); 安全参数初始化
// Start execution
advertising_start(); 开始广播
// Enter main loop
for (;;)
{
power_manage(); 待机
}
}
我们看到,在main函数里面,先是一堆的初始化,紧接着进入了一个只有待机函数的for循环,
用户所编写的任务都放在了timer里面,按键使用gpioe 的event来唤醒芯片,这种软件结构有利于
节省功耗,用户只需要按照他程序的结构,添加任务和修改参数,就能实现自己的要求。
static void power_manage(void)
{
uint32_t err_code = sd_app_evt_wait(); // 进去WFE 待机
APP_ERROR_CHECK(err_code);
}
上面是 待机函数,可以看到里面除了等待event和查错,并没有执行什么。
- 51822代码篇1
- 51822代码篇2
- 51822代码篇3
- 51822代码篇4
- 代码1
- 代码1
- 代码1
- 代码1
- 代码1
- 代码 1
- 代码1
- 代码1
- LLVM代码研读(1)---- 安装篇
- Spring Cloud Stream (1)-代码篇
- 第十七篇:计算代码行数练习代码
- Gerrit使用篇-提交代码,合并代码
- 新手C#代码简洁性—代码篇
- 提高代码可维护性(1)---代码注释
- 0021-class文件及配置文件路径
- hdu4003(树形dp)
- Android Studio1.4上使用butterknife zelezny
- 关于Cocos2d-x在新版xcode下横竖屏设置
- oracle 如何获取年、月、日列表
- 51822代码篇1
- 最新Cocos2d-x3.x播放音效与背景音乐以及手机游戏震动特效
- ECS阿里云邀请码wchkl5
- IOS游戏开发之cocos2d-x实现自定义字体
- ACM气球膨胀问题C++实现
- C++实现贪心算法-区间覆盖问题
- 安卓项目的创建以及注意事项
- 最全的常用正则表达式大全
- Sql Server 编写分页存储过程