
嵌入式开发
白菜爱吃白菜
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STM32F103RE使用SPI3作为从模式
网上所见STM32的SPI例程多数是作为主模式,官方提供的例程中有从模式的例程。 但是我参照官方的例程来设置SPI3为从模式,发现MISO管脚都没有数据输出,而主机的时序没有问题。 问题是出在管脚的配置上,SPI3默认使用的管脚是: SPI3.NSS ==> PA15 SPI3.SCK ==> PB3 SPI3.M原创 2016-07-01 15:06:02 · 2466 阅读 · 0 评论 -
nrf51蓝牙未连接超时自动关机
问题硬件: nrf51822开发板 软件: MDK SDK: nRF5_SDK_12.3.0_d7731ad 工程是基于 nRF5_SDK_12.3.0_d7731ad\examples\ble_peripheral\ble_app_uart在开发nrf51822过程中,发送当大概3分钟未连接蓝牙后,就再也搜索不到该蓝牙,只能通过复位才能重新搜索到蓝牙,必现。原因在广播初始化中/**@b原创 2017-09-30 17:16:51 · 1321 阅读 · 1 评论 -
STM32L4xx下bootloader重设中断向量表的一个问题
问题开发bootloader中,在跳转到应用程序时,重设中断向量表static __asm void asmJump(unsigned int addr){ /* goto applicant */ LDR SP,[R0] ADD R0,#0x4 LDR R1,[R0] BX R1}static void stm32l431GotoApplicant(uns原创 2017-09-21 11:14:48 · 3380 阅读 · 1 评论 -
MDK ARM中__weak关键字的使用
__weak函数用于定义变量或者函数,常见于定义函数,在MDK ARM链接时优先链接定义为非weak的函数或变量,如果找不到则再链接weak函数。具体用法为:file1.c__weak void weakFunction(void){ //do something return;}void someFunctionCall(void){ //do somet原创 2017-06-14 18:28:58 · 16381 阅读 · 2 评论 -
STM32L431之SPI时钟过高导致无法通信
现象:SPI的clock为2Mhz时通信正常,如果是4Mhz甚至更高则无法通信。卡死在 while (0 == (SPI1->SR & SPI_SR_TXE));通过逻辑分析仪查看时钟时发现写数据时只出现4个时钟脉冲,后续一直为高。 如果查看SPI时钟频率2Mhz时的时钟如下图所示 可以发现第一个时钟的占空比还算正常,后续的占空比逐渐增加,到第八个时钟时已经达到88%。原因原理图上,S原创 2017-03-23 15:53:34 · 4405 阅读 · 1 评论 -
STM32L431之SPI从模式使用DMA时数据偏移3个字节
环境:将SPI3配置成从模式,并且使用DMA来传输数据,在初始化完SPI3后,就立即配置DMA,将待传输的数据准备好。主机还未读取时,就重新更新数据,更新数据的方法为直接调用Spi3TxDmaStartstatic void Spi3TxDmaStart(void * buf,unsigned int len,int enableInterrupt){ DMA2_Channel2->CC原创 2017-03-29 15:52:57 · 5660 阅读 · 0 评论 -
STM32L431之SPI时钟翻倍问题
简单地将SPI配置成8位数据长度模式 /* configure SPI1 */ SPI1->CR2 = 0x1704; SPI1->CR1 = 0x15C;读写方式 GPIOA->BSRR |= 1 << 20; //set NSS low for(i = 0;i < command_size;i++) { while (0 == (SPI1->S原创 2017-03-13 10:15:51 · 1899 阅读 · 0 评论 -
STM32L431之MDK-ARM单步调试错乱
芯片默认使用MSI,频率只有4M,现在需要改成最大时钟80M。一个简单的程序如下:void SystemClock_Init(void){ /* enable HSE */ RCC->CR |= 0x00010000U; while (0 == (RCC->CR & 0x00020000U)); /* configure PLL */ RCC->PLLCFGR =原创 2017-03-09 15:36:25 · 3061 阅读 · 0 评论 -
飞思卡尔KL17之LPTMR0的若干错误
想要用LPTMR0做一个ms级别的系统基准时钟,想法是: LPTMR0时钟源为1000HZ,LPTMR0->CMR为1000,这样子每隔1S中断一次,在每次中断中SystemTickSecond++; 获取系统时钟的方法就是SystemTickSecond + LPTMR0->CNR问题1:访问LPTMR0->CNR时硬件错误,毕现。原因:LPTMR0未初始化,未使能。在访问该寄存器前必原创 2017-03-09 10:20:06 · 1395 阅读 · 0 评论 -
nrf51822与nrf24l01之间的无线通讯
nrf51822和nrf24l01同属于nordic公司下的产品,在射频方面能够做到兼容,但是开发过程中遇到一些问题,特此做个记录想要两者能够互相通讯,需要注意一下一些配置 1. 白化: nrf51822的射频为了提高抗干扰能力,加入白化功能,但是nrf24l01没有此功能,所以nrf51822端必须关闭(PCNF1.WHITEEN = 0),否则引起数据乱码。 2. 地址长度:地址长度两者都原创 2017-11-02 20:19:58 · 6286 阅读 · 1 评论