随笔分类 -  arm

摘要:(1) Memset原型: extern void *memset(void *buffer, int c, int count); 用法:#include <string.h> 功能: 把buffer所指内存区域的前count个字节设置成字符 c。 说明: 返回指向buffer的指针。用来对一段内存空间全部设置为某个字符 例如: char a[10]; memset(a, '\0', sizeof(a)); memset可以方便的清空一个结构类型的变量或数组。 如:struct _test{cha... 阅读全文

posted @ 2012-05-15 02:39 蓝色星宇 阅读(6313) 评论(1) 推荐(4) 编辑 |

摘要:在STM32工程中调用printf函数,需要加入如下代码:#ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf set to 'Yes') calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else #define PCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endif /* __GNUC_ 阅读全文

posted @ 2012-05-14 23:48 蓝色星宇 阅读(3484) 评论(0) 推荐(0) 编辑 |

摘要:在第一次建立STM32F103C8内核的Keil工程时,选择了j-link作为调试器,当点击debug->start/stop debug session,开始调试时,出现如下错误*** error 10: Syntax errorNo Algorithm found for: 08000000H - 0800150FHErase skipped!解决方法如下:在下面的窗口中点击Add在列表中选中容量范围,点击 Add返回前一个窗口,可以看见已经多了一个选项了,点击 OK,大功告成。详情请看:http://infocenter.arm.com/help/index.jsp?topic=/ 阅读全文

posted @ 2012-04-16 00:50 蓝色星宇 阅读(13743) 评论(0) 推荐(0) 编辑 |

摘要:SD/TF卡引脚定义4推荐SD卡:1-data3,2-cmd,3-vss,4-vdd,5-clk,6-vss,7-data0,8-data1,9-data2.TF卡(SD模式):1-data2,2-data3,3-cmd,4-vdd,5-clk,6-vss,7-data0,8-data1TF卡(SPI模式):1-rsv,2-cs,3-di,4-vdd,5-sclk,6-vss,7-do,8-rsv 阅读全文

posted @ 2012-04-13 11:20 蓝色星宇 阅读(1012) 评论(0) 推荐(0) 编辑 |

摘要:在硬件平台:STM32 +SSD1963+4.3TFT(TP)+TFcard 实现了将显示数据存储为bmp文件的应用。TFT应用为RGB565格式的16位色显示480*272分辨率,bmp文件RGB565格式的位图很多软件打不开,大部分是只支持RGB555的。因此做了两种类型 的代码。bmp文件存储在TF卡,以下代码已通过调试。#define LCD_READ_BUFFER_SIZE2048//1024#define FILE_HEADER_SIZE0x36//0x3E//0x36#define RGB565_FILE_HEADER_SIZE0x46//0x3E//0x36uint8_t LC 阅读全文

posted @ 2012-02-08 17:59 蓝色星宇 阅读(1937) 评论(0) 推荐(0) 编辑 |

摘要:NMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。不过,也有少数厂商的设备使用自行约定的协议比如GARMIN的GPS设 阅读全文

posted @ 2012-01-03 13:58 蓝色星宇 阅读(357) 评论(0) 推荐(0) 编辑 |

摘要:在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一个文件,方便烧写和生产。下面结合STM32的IAP Bootloader Code和Application Code的合并,介绍两种合并BIN文件的方法。 首先简单介绍一下STM32的IAP。IAP(In-application-programming),即在应用中编程。有了它,产品发布之后,仍然可以方便的升级固件,而不需要拆机并用JTAG等方式更新程序。IAP系统的固件一般有两部分组成,IAP BootLoader Code和Application Code,如下图所示。 系统启动时,首先运行IAP BootLoader Cod.. 阅读全文

posted @ 2011-12-21 16:25 蓝色星宇 阅读(3504) 评论(0) 推荐(0) 编辑 |

摘要:STM32+SSD1963+TFT(FSMC)已调试通过的代码。其中要注意的两点:1.外部访问地址需加volatile,否则keil MDK 优化会将部分代码优化掉,造成错误。 volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。2.FSMC内部地址和外部实际地址有区别。如A18连线对应内部地址是A19。// ssd1963 #d/c -------- STM32F103VCT6 A18#define LCD_COMM 阅读全文

posted @ 2011-12-09 17:02 蓝色星宇 阅读(3213) 评论(0) 推荐(0) 编辑 |

摘要:STM32支持在应用中编程,也就是所谓的IAP,这对产品的在线升级带来了很大方便。在线升级的原理简介如下:在单片机的FLASH中有两段代码,一段是IAP代码,另一段就是用户的应用程序即APP代码,IAP代码放在单片机复位时的起始地址,而APP代码则放在IAP后面的地址,上电时CPU首先执行IAP代码,再通过IAP代码跳转到APP代码开始执行。在IAP代码执行期间,通过检测某一个事件(如IO电平)来判断是否对APP代码进行更新,如果该事件无效,则不更新,直接跳转到APP代码执行;如果该事件有效,则更新APP代码,而更新的文件则从外部磁盘通过串口或USB写入FALSH应用程序空间。流程图如下:当然 阅读全文

posted @ 2011-12-02 17:44 蓝色星宇 阅读(6473) 评论(2) 推荐(0) 编辑 |

摘要:#define PWM_CLK1M_ARR_8K125-1#define TIM_CLK1M 1000000IzTrigPWMInit(TIM_CLK1M,PWM_CLK1M_ARR_8K);void IzTrigPWMInit( uint32_t TIMCLK, uint16_t PWMCLK)//10%~90%//void IzTDivPWMInit( uint32_t TIMCLK, uint16_t PWMCLK)//10%~90%{if(TIMCLK>SystemCoreClock){TIMCLK = SystemCoreClock;}//reset /* TIM3 enabl 阅读全文

posted @ 2011-11-23 16:46 蓝色星宇 阅读(4874) 评论(0) 推荐(0) 编辑 |

摘要:SSD1963 低功耗应用。背光调节除了duty 还有一个系数:DBC manual brightness:duty*00%,已经调试通过。void LcdEnterSleep(void){//set PWMWriteCommand(0xBE); //WriteData(0x0E);//PLL(120M)/(256*Value)/256=120Hz//WriteData(0xFF);//duty=X/256WriteData(0x50);//duty=X/256WriteData(0x09);//DBC disable PWM enable //close backlightWriteData 阅读全文

posted @ 2011-11-23 16:33 蓝色星宇 阅读(750) 评论(0) 推荐(0) 编辑 |

摘要:首先在ST官网上下载了STM32的USB开发套件地址:http://www.st.com/stonline/products/support/micro/files/um0424.zip由于此开发套件基于ST的官方开发板,与EK-STM32F的电路有所不同。比较了一下,不同之处在于1, 官方的开发套件使用PD.09作为USB识别使能线,而EK-STM32F使用PD.08。2, 官方的开发套件通过PB.09来判断是否进入DFU模式, 而EK-STM32F的按键使用了PD.03和PD.04。3, EK-STM32F没有接外部SPI Flash, 所以只能更新内部flash。因此修改代码如下:voi 阅读全文

posted @ 2011-11-23 16:23 蓝色星宇 阅读(1881) 评论(0) 推荐(0) 编辑 |

摘要:SD卡和TF卡管脚定义有区别,需要注意。* +-------------------------------------------------------+ * | Pin assignment | * +-------------------------+---------------+-------------+ * | STM32 SPI Pins | SD | Pin | TF Pin * +-------------------------+---------------+-------------+ * | SD_SPI_CS_PIN | ChipSelect ... 阅读全文

posted @ 2011-08-25 12:45 蓝色星宇 阅读(5437) 评论(0) 推荐(0) 编辑 |

摘要:一、udp.c实现的函数1、voidudp_input(struct pbuf *p, struct netif *inp)说明:处理接收到的udp数据包。参数:p数据包缓存区;inp网络接口。2、err_tudp_send(struct udp_pcb *pcb, struct pbuf *p)说明:发送udp包。这个函数直接调用udp_sendto()函数。参数:pcb协议控制块;p数据包发送缓存区。返回:ERR_OK发送成功;ERR_MEM发送溢出;ERR_RTE不能发送到指定ip;其它表示发送失败。3、err_tudp_sendto(struct udp_pcb *pcb, struc 阅读全文

posted @ 2011-08-10 11:28 蓝色星宇 阅读(3957) 评论(0) 推荐(0) 编辑 |

摘要:原文http://www.flatws.cn/article/program/embed/2011-06-17/31076.htmllwip是一个轻量级的TCP/IP协议栈(Lightweight TCP/IP Stack)实现,最初是瑞士计算机科学学院Adam Dunkels编写的一个应用于无操作系统的嵌入式系统中的TCP/IP协议栈,后来作为一个开源(open source)项目,由一个全球性的团队进行开发和维护。xZg平坦软件园已实现的部分有:xZg平坦软件园1. 标准的TCP/IP协议栈实现,包括TCP、UDP、ICMP、IP、ARP、DHCP;xZg平坦软件园ICMP(Interne 阅读全文

posted @ 2011-08-10 11:22 蓝色星宇 阅读(3265) 评论(0) 推荐(0) 编辑 |

摘要:CY22393的应用。第一步:用CyclocksRT 软件设置好需要产生的频率等参数。生成配置文件。第二步:用CY3672(编程器)+CY3672ADP003(IC 座)将配置文件烧录。或用第三方烧录器如河洛等烧录。最后焊接到板子上就可以应用了。原理图连接:Pin16 --VCC(或IO 控制),Pin15(S2)---GND,Pin12/Pin13--I2C线上拉。如下为调试成功的I2C 控制/*CY22393*/#define CY22393_ADDR0x69#define CY22393_I2C_ADDR CY22393_ADDR#define CY22393_PLL_ENABLE 0x 阅读全文

posted @ 2011-07-29 16:25 蓝色星宇 阅读(1266) 评论(0) 推荐(0) 编辑 |

摘要:Setup输入如:PORTB 阅读全文

posted @ 2011-06-30 18:41 蓝色星宇 阅读(1625) 评论(0) 推荐(0) 编辑 |

摘要:下面是已经调试通过的触摸屏坐标变换算法(触摸屏校准)。这个算法逻辑简单,容易理解。运算也简单。大道至简,简单好。/*Touch(X,Y) ==> LCD(X,Y)第一步:A、B、C、D是在LCD上绘制的4个点+A B++C D+A、B、C、D在LCD上的坐标:LCD: W*HA:(W/4, 3H/4)B:(3W/4, 3H/4)C:(W/4, H/4)D:(3W/4, H/4)第二步:取得A、B、C、D四个点的触摸屏坐标(XA,YA).....后计算触摸屏中心点坐标(x0,y0):Touch center(x0,y0);X0=(XA+XB+XC+XD)/4Y0=(YA+YB+YC+YD) 阅读全文

posted @ 2011-06-28 17:31 蓝色星宇 阅读(1270) 评论(0) 推荐(0) 编辑 |

摘要:频率 10K,占空比可以达到1%变化的精度,100K只能是10%的变化精度。 #define PWM_CLK1M_ARR_10K100-1void IzADCPWMInit(uint8_t duty)//10%~90%{ if(duty>90) {duty = 90; } if(duty<10) {duty = 10; } //reset /* TIM4 enable counter */ TIM_Cmd(TIM4, DISABLE); /* TIM4 Main Output Enable */ TIM_CtrlPWMOutputs(TIM4, DISABLE); //end of 阅读全文

posted @ 2011-06-16 10:16 蓝色星宇 阅读(10741) 评论(1) 推荐(0) 编辑 |

摘要:来源:http://hi.baidu.com/hqy51222/blog/item/99085aee305eb43fadafd56c.html1.分散加载文件(链接脚本文件)的格式问题描述:在链接的时候,要在不同的地址处添加链接文件,暨分散加载文件,这个分散加载文件有什么样的格式呢?问题解答: 程序正确编译生成目标文件以后, 就会链接成可执行的文件, 这个过程中要用到分散加载文件, 它决定可执行的代码在存储器中存放的位置, 这在复杂的程序(例如VIVI对Linux内核的引导)中是很重要的. 下面是一个简单的分散加载文件的例子: ; ******************************* 阅读全文

posted @ 2011-05-04 09:44 蓝色星宇 阅读(3315) 评论(0) 推荐(0) 编辑 |

随笔 - 54, 文章 - 0, 评论 - 21, 阅读 - 14万

Copyright © 2025 蓝色星宇
Powered by .NET 9.0 on Kubernetes

跟小D每日学口语 跟小D每日学口语
点击右上角即可分享
微信分享提示