
OSAL
landao_BLE
My might can not match!!
展开
-
精读OSAL --中断方式串行通信(_hal_uart_isr.c)
当在HAL里读完 _hal_uart_isr.c 就明白了TI的工程师写的发送接收算法. static void HalUARTInitISR(void) static void HalUARTOpenISR(halUARTCfg_t *config)初始化和打开没什么好讲的,读文档就有了. 先在这里讲缓冲区算法 |--------------原创 2013-05-31 10:08:10 · 7661 阅读 · 2 评论 -
精读OSAL --按键的执行流程(hal_key.c onboard.c)
OSAL的按键执行流程和普通单片机的写法还是有很大的不同,不过用回调函数的方法可以使按键模块内聚度高,是很好的模块化设计。底层移植时主要修改就是hal_key.c里面的内容,上层应用则配置key时传入一个回调函数,这个回调函数就是有按键操作时就会由hal调用,在回调函数做相应的处理,比如应用层生产事件,或者开始广播,什么的。。void HalKeyInit(void){}void原创 2016-09-23 15:24:10 · 1888 阅读 · 0 评论 -
MSP430的应用笔记
有关MSP430开发过程中,要记住的问题都会记录在这。1.原创 2014-05-04 09:19:17 · 734 阅读 · 0 评论 -
精读OSAL --我的SPI驱动的失败
很无奈,再分析完OSAL的内存分配代码后,发觉之前一直为之努力的SPI驱动太浪费RAM空间.用队列来实现异步操作想法不错,可惜在一串字符串显示时会用尽内存.而且内存分配不总是成功,这样带来不少麻烦. 最后回归到最简单的SPI驱动--------循环等待.又不能异步就连DMA都没用上.原创 2013-07-23 15:01:03 · 969 阅读 · 1 评论 -
精读OSAL --我的SPI驱动
当我仔细地看完OSAL里HAL的SPI驱动,发觉它并不是我们常用的普通SPI驱动.在数据前增加头,做成包的形式发数据.而我们的项目里有四外设要用SPI,而且是普通的SPI操作.最后用DMA的方式重新构造自己的驱动.概念如下,代码就不上了,需要的MSG吧. 首先,我构造一个全局的链表,每一个SPI操作都是先写到链表. 其次,考虑到SPI的通信方式,就不实现读写操作,只实现一个原创 2013-07-02 17:34:38 · 1178 阅读 · 0 评论 -
内存分配方式及常见错误
内存操作对于程序开发人员来说,永远是一块雷区。在这片区域,总是不断的埋雷、排雷,而且往往是排雷花了非常大的代价。记得在公司实习时,有大概2个星期的时间,team的几个人去排雷——有地方发生了memory leak!而以我现在的认知来看,只有极少数的programer敢拍着胸脯说,非常熟悉内存操作,手到擒来不会排雷。针对这个情况,我要求自己在尽量去探索,以求少埋雷、甚至不埋雷(这是一个很大的挑战转载 2013-07-11 17:25:04 · 824 阅读 · 0 评论 -
精读OSAL --SPI方式串行通信(_hal_uart_spi.c)
SPI种方式是可以在DMA的方式上同时共享缓冲区,来节省内存.spiRxBuf = dmaCfg.rxBuf;piRxDat = dmaCfg.txBuf; spiTxPkt[SPI_MAX_PKT_LEN]spiRxDat = dmaCfg.txBuf[0];//这个最难懂,其实就当是缓冲区就好子.解包后的数据放在这,让读函数来读.spiTxPkt = dmaCfg.txBu原创 2013-06-06 15:25:54 · 3871 阅读 · 3 评论 -
精读OSAL --回调函数的理解
这里其实不是从代码里出来的,只是自己想通了一些关于回调函数的问题.. 一直不明白回调函数怎么用... 其实很简单,举个例子:应用要从片外读FLASH,通过DMA,不用CPU干预操作... DMA传输一直在轮询处理完成没有的方法是非常低效..而OSAL中常用的回调就是解决这个问题.. 原应用: 其它操作;需要数据;读数据;等待完成读取;数据原创 2013-06-13 17:28:06 · 1573 阅读 · 0 评论 -
精读OSAL --DMA方式串行通信(_hal_uart_dma.c)
跳过初始化的内容.先讲接收操作:DMA方式的具体操作可以查看DMA的相关内容.这里有意思的是缓冲区算法的实现,和中断方式还是有些区别. |BAUD|DXBUF| |..........|............| |..........|............|原创 2013-06-04 11:18:48 · 7537 阅读 · 4 评论 -
精读OSAL --时钟及休眠(hal_sleep.c)
CC25XX系列的SOC上面有两个高频时钟(32MHz外部晶振,16MHz的内部RC时钟),和两个低频时钟(32Khz的外部晶振,12KHz的内部RC时钟)。文档仔细看过就明白,16Mhz的内部高频时钟是不能作RF时钟,只能在某些时候(中断)作快速启动的时钟源,涉及RF的操作都要等待32MHz的外部晶振起振及稳定。所以32Mhz的晶振是必需的。而32Khz的低频时钟则可以二选一,内部32K原创 2016-09-23 15:57:29 · 2812 阅读 · 0 评论