摘要:本文主要向大家介绍了Flash基础入门之[nRF51822] 11、基础实验代码解析大全 · 实验16 - 内部FLASH读写,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。
本文主要向大家介绍了Flash基础入门之[nRF51822] 11、基础实验代码解析大全 · 实验16 - 内部FLASH读写,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。
一、实验内容:
通过串口发送单个字符到NRF51822,NRF51822 接收到字符后将其写入到FLASH 的最后一页,之后将其读出并通过串口打印出数据。
二、nRF51822芯片内部flash知识:
EN-nRF51D 开发板使用NRF51822 芯片为nRF51822-QFAA,如下图所示,共有256KBFLASH,256 页,页大小为1024 字节。
NRF51822 内部FLASH 写流程如下:
三、代码解析:
main:
1 int main(void)
2 {
3 ...
4
5 串口初始化
6
7 printf("Flashwrite example\r\n");
8 patold = 0;
9 pg_size = NRF_FICR->CODEPAGESIZE;
10 pg_num = NRF_FICR->CODESIZE - 1; // Use last page in flash
11
12 while (true)
13 {
14 // Start address:
15 addr = (uint32_t *)(pg_size * pg_num);//计算地址并擦除一页
16 // Erase page:
17 flash_page_erase(addr);
18 i = 0;
19
20 do
21 {
22 printf("Enter char to write to flash\r\n");
23
24 // Read char from uart, and write it to flash:
25 do
26 {
27 err_code = app_uart_get(&patwr);
28 }
29 while(err_code == NRF_ERROR_NOT_FOUND);//从串口获得1byte数据
30
31 if (patold != patwr)//将1byte写入flash
32 {
33 patold = patwr;
34 flash_word_write(++addr, (uint32_t)patwr);
35 i += 4;
36 printf("‘%c‘ was write to flash\r\n", patwr);
37 }
38 // Read pattern from flash and send it back:
39 patrd = (uint8_t) * addr;
40 printf("‘%c‘ was read from flash\r\n", patrd);
41 }
42 while (i < pg_size);
43 }
44 }
以上就介绍了Flash的相关知识,希望对Flash有兴趣的朋友有所帮助。了解更多内容,请关注职坐标常用软件Flash频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号