Nodic 开发板上的使用
来源:互联网 发布:拟南芥转录因子数据库 编辑:程序博客网 时间:2024/06/05 15:38
GPIO的控制部分,经常用来操作LED灯,读取BUTTON的状态。
对GPIO的控制部分,主要是在nrf_gpio.h中,最基本的几个接口使用:
nrf_gpio_cfg_output
nrf_gpio_cfg_input
nrf_gpio_pin_set
nrf_gpio_pin_clear
nrf_gpio_pin_read
Common部分,经常会用到us级别的延迟。
在nrf_delay.h中需要对如下的接口了解。
nrf_delay_us
timer部分。
Uart部分。
在simple_uart.c中。
simple_uart_config,默认波特率是38400.
simple_uart_putstring
simple_uart_put
simple_uart_get_with_timeout
simple_uart_get
SPI master部分。
在spi_master.c中。
spi_master_open
spi_master_evt_handler_reg
spi_master_send_recv
在spi_slave.c中。
spi_slave_init
spi_slave_buffers_set
spi_slave_evt_handler_register
arm_startup_nrf51.s中的技术细节。
中断向量表的定义如下
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
DCD POWER_CLOCK_IRQHandler ;POWER_CLOCK
DCD RADIO_IRQHandler ;RADIO
DCD UART0_IRQHandler ;UART0
DCD SPI0_TWI0_IRQHandler ;SPI0_TWI0
DCD SPI1_TWI1_IRQHandler ;SPI1_TWI1
DCD 0 ;Reserved
DCD GPIOTE_IRQHandler ;GPIOTE
DCD ADC_IRQHandler ;ADC
DCD TIMER0_IRQHandler ;TIMER0
DCD TIMER1_IRQHandler ;TIMER1
DCD TIMER2_IRQHandler ;TIMER2
DCD RTC0_IRQHandler ;RTC0
DCD TEMP_IRQHandler ;TEMP
DCD RNG_IRQHandler ;RNG
DCD ECB_IRQHandler ;ECB
DCD CCM_AAR_IRQHandler ;CCM_AAR
DCD WDT_IRQHandler ;WDT
DCD RTC1_IRQHandler ;RTC1
DCD QDEC_IRQHandler ;QDEC
DCD LPCOMP_IRQHandler ;LPCOMP
DCD SWI0_IRQHandler ;SWI0
DCD SWI1_IRQHandler ;SWI1
DCD SWI2_IRQHandler ;SWI2
DCD SWI3_IRQHandler ;SWI3
DCD SWI4_IRQHandler ;SWI4
DCD SWI5_IRQHandler ;SWI5
DCD 0 ;Reserved
DCD 0 ;Reserved
DCD 0 ;Reserved
DCD 0 ;Reserved
DCD 0 ;Reserved
DCD 0 ;Reserved
__Vectors_End
例如我们经常会在外面定义GPIOTE_IRQHandler如下,这样就和中断向量表中的定义就对应起来了。
void GPIOTE_IRQHandler(void)
{
if(NRF_GPIOTE->EVENTS_PORT !=0)
{
NRF_GPIOTE->EVENTS_PORT = 0; //clear the PORT EVENT
for(uint8_t i=0; i<BUTTONS_NUMBER; i++)
{
if(nrf_gpio_pin_read(buttons_list[i]) == 0)
{
nrf_delay_ms(10); //delete jitter
if(nrf_gpio_pin_read(buttons_list[i]) == 0) nrf_gpio_pin_toggle(leds_list[i]);
}
}
}
}
熟悉一些常见的汇编指令。
NRF_POWER_RAMONx_RAMxON_ONMODE_Msk EQU 0x3
MOVS R1, #NRF_POWER_RAMONx_RAMxON_ONMODE_Msk
这样R1寄存器的之就是3
NRF_POWER_RAMON_ADDRESS EQU 0x40000524
LDR R0, =NRF_POWER_RAMON_ADDRESS
这样R0寄存器的值就是0x40000524
LDR R2, [R0]
这是R2的值就是0x00000003
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
在编译出来的map文件中,可以看到SystemInit接口是在
SystemInit 0x000001b5 Thumb Code 64 system_nrf51.o(i.SystemInit)
__main 0x000000c1 Thumb Code 0 entry.o(.ARM.Collect$$$$00000000)
谢谢
- Nodic 开发板上的使用
- nodic开发工具相关问题
- 开发板上tftp命令的使用
- 如何快速的在keil5中改nodic 52832 sdk的按键
- 嵌入式Linux开发板上NFS文件系统的使用
- 嵌入式Linux开发板上NFS文件系统的使用
- [教程]PX2开发板上的串口UART3使用入门
- [教程]PX2开发板上的串口UART3使用入门
- 摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用
- 摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用
- 摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用
- 在开发板上使用tftp命令下载服务器上的文件
- 移植opencv到开发板,摄像头在开发板6410上的采集使用(1)
- 移植opencv到开发板,摄像头在开发板6410上的采集使用(2)
- 开发板上如何使用GDB
- iOS 开发之Widget的开发及使用(上)
- 使用buildroot编译和使用开发板上的gcc[native gcc]
- mjpeg-streamer的在PC和嵌入式开发板上的移植与使用
- 在Windows上安装Git for Windows 2.x
- MarkDown 的基本语法和快捷键,20分钟快速学会
- Groovy的安装(包括eclipse插件)
- Ionic controller里的代码只能运行一次
- ES6 中被遗忘的孤岛
- Nodic 开发板上的使用
- Android编译系统详解(三)——编译流程详解
- LightOJ 1305 (数学求平行四边形面积)
- CSU - 1755 阶数
- 机器学习基本概念-2
- 编译链接
- JAVA面试宝典6
- POJ1091 简单的欧几里得+简单的容斥
- Winform控件属性事件介绍