【蓝牙初尝试】Keil5+nRF52832

文章讲述了在使用Keil5开发过程中,如何检查设备连接,安装和配置Pack文件以解决头文件缺失的问题,以及如何处理J-link驱动器和nRFgo配合擦除芯片程序,和闪存下载程序的安装与使用,以成功将程序烧录至开发板。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        打开Keil5工程:前置路径\examples\peripheral\blinky\pac10040\arm5\LED.uvprojx

        点击魔术棒,进入目标选项界面,首先查看device是否连接成功:

        Device需要显示为绿色才可以:

         安装运行程序所需要的Pack文件:可以点击左上角系统自动更新,然后安装需要的Pack。

         点击左上角进行编译,发现会缺失部分头文件,如nrf52.h等。

         发现缺失的nrf52.h等头文件是来自于前一步安装的Pack包,为什么已经安装了却仍然没有找到头文件呢?

        原因在于没有将Pack所在位置的路径添加进来,需要手动添加一下:

        重新编译后,问题解决:

         在将程序烧录进开发板之前,需要连接好J-link驱动器,并用nRFgo擦除蓝牙芯片中的程序(外设程序不带协议栈,有协议栈会导致无法下载进去)。

         下载程序时还遇到了一个问题,就是下载进闪存时报错,没有安装对应的闪存下载程序:

        需要在安装好的Pack文件路径中,找到Flash文件夹,并找到对应需要的闪存下载程序: 

         然后将其添加到Keil安装路径中的闪存对应文件夹中:

        这样就可以在Keil中直接添加闪存文件了,注意闪存地址不能出现重复!

         点击load按钮,将程序下载至闪存,成功。

以下是在Keil平台上生成NRF52832芯片模拟IIC的代码示例: 1. 首先,在Keil中创建一个新的工程,并选择NRF52832芯片作为目标设备。 2. 在工程中添加nrf_drv_twi.c和nrf_drv_twi.h两个文件,这是NRF SDK提供的IIC驱动程序。 3. 在工程中添加以下代码来始化IIC控制器: ```c #include "nrf_drv_twi.h" #define TWI_SCL_PIN 14 #define TWI_SDA_PIN 13 #define TWI_FREQUENCY NRF_TWI_FREQ_100K const nrf_drv_twi_t m_twi = NRF_DRV_TWI_INSTANCE(0); void twi_init(void) { ret_code_t err_code; const nrf_drv_twi_config_t twi_config = { .scl = TWI_SCL_PIN, .sda = TWI_SDA_PIN, .frequency = TWI_FREQUENCY, .interrupt_priority = APP_IRQ_PRIORITY_HIGH }; err_code = nrf_drv_twi_init(&m_twi, &twi_config, NULL, NULL); APP_ERROR_CHECK(err_code); nrf_drv_twi_enable(&m_twi); } ``` 4. 接下来,可以使用以下代码来写入和读取IIC设备: ```c ret_code_t twi_write(uint8_t address, uint8_t reg, uint8_t *data, uint8_t len) { ret_code_t err_code; uint8_t tx_buff[len+1]; tx_buff[0] = reg; memcpy(&tx_buff[1], data, len); err_code = nrf_drv_twi_tx(&m_twi, address, tx_buff, len+1, false); return err_code; } ret_code_t twi_read(uint8_t address, uint8_t reg, uint8_t *data, uint8_t len) { ret_code_t err_code; err_code = nrf_drv_twi_tx(&m_twi, address, &reg, 1, true); if (err_code != NRF_SUCCESS) return err_code; err_code = nrf_drv_twi_rx(&m_twi, address, data, len); return err_code; } ``` 以上就是在Keil平台上生成NRF52832芯片模拟IIC的代码示例。需要注意的是,在使用IIC设备时,需要根据具体的设备规格书来进行读写操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值