STM32移植到GD32的注意事项
GD32的性价比和稳定性都很高。我更喜欢用GD32.。但不是100%兼容的。需要注意一些细节。2.内部 Flash1)芯片设置读保护用法描述由于GD的Fash是自己的专利技术,STM的Fash是第三方提供的,所以GD的 Flash和STM的Fash有些许差异。GD的擦除时间会长一点解决方法在写完KEY序列以后,需要读该位,确认key已生效。所以,这里应该插入While(! (FLASH->CR &0x200);//Wait OPTWRE或可简单插入两个NOPNOPONOPO在ST库中,只有FLASH Status FLaSH Erase Option Bytes(void)FLaSH Status FlaSH ProgramOption Byte Data(uint32 t Address, uint8 t DataFLASH Status FLASH_ Enable WriteProtectionuint32 t FLASH PagesFLASH Status FLASH ReadOutProtection (Functional State New State)四个函数需要修改。2)IAP在应用中编程描述GD32由于有fash的0访问时序,同SM32在Fash的Ease和 Program上存在差别,GD32的 Erase和 Program时间比STM32的稍微长些建议对 Erase和 Progran时间进行修改解决方法将宏定义井 define erase timeout(luint32 t)OX000B000O)#define ProgramTimeout(uint32_t)ox00002000修改为:#define erasetimeout((uint32_t)OX00OFFFFF#define ProgramTimeout(uint32 t)OxOOOOFFFF备注: Erase和 Program时间宏定义在stm3210 x flash. c源文件中路径: braiesSTM32F10 x Std Periph Driversr)3)用IAR下载配置解决方法在批量牛产的时候首先会烧写一个USB的boot,这个boot自动运行后在由上位机软件进行烧写应用程序。如果boot程序不能自动运行则需要重新插拔次电源。给生产造成一些麻烦。产生不能自动运行程序的原因是如果程序设置读保护的话需要等待 FLASH CR的第9[ OPTWRE]位为1.如果没有置位的话继续执行就会出错。由」ST的执行速度慢,程序执行到读 FLASH CR寄存器的时候该位已经置1,GD的执行速度比较快,程序运行到这的时候该位还没置1,因此需要在 FLASH ReadOut Protection函数里面添加一些轮询该位为1或者加延时3.ISP烧写软件1)ISP烧写,建议使用官方烧写软件性述芯片内部同有区别解决方法建以到下载最新版本的另外也有专门的烧写软件(可以到论坛下毂如果使用自制的软件或脱机编程器,实现和完全兼容,建议修改以下参数。页擦除等待超时时间增加至整片擦除等待超时时间增加至左右字编程等待超时时间增加至,臾编程等笭超时时间增加至I/0日1)I0口外部中断使用方法措述在关闭期间,如果外部引脚有电平的变化,在使用MR打开中断后会马上进入中断服务程序。理论是打开中断前,不管管脚是否有电平的变化,都不会影响到打开后的中断响应。解决方法所以解决方法就是通过禁用上升沿或者下降沿检测寄存器来开关中断,不能使用IMR屏蔽奇存器。程序如下关闭沿检测,以达到关闭中断的目的,下降沿使用寄存器,上升沿使用寄存器2)在待机模式,PA8引脚特殊设置描述在使用低功耗的情况下,PA8会被MCU在内部被设置为地PA8复用为MU内部频率输出,超低功耗设时需要悬空解决方法在待机模式,PA8悬空不用3)低功耗下必须注意描述在使用低功耗情况下,把软件全部端口(AF)时钟关掉,无论是否有该端凵。4)当有脉冲群冲击管脚摧述需要在在进入中断后关闭中断4.定时器1)定时器输入捕获模式需要软件清中断描述sTM定吋时器输入捕获模式默认能硬件清中断,GD为了更加严格要求配置,需要做软件清中断解决方法软件清除标志位2)定时器向上脉冲计数模式设置述定时器的用法差异解决方法脉冲计数模式下,装载值必须设置为比预期值大,否则不计数在ST上如果重载值不设置(初始为0)的时候,CNT可以正常计数。在GD上如果重载值不设置保持初始为0的时候,会因为重载值为零,即便是来一个脉冲也会导致所有的寄存器复位从而不能正常计数。型号GD32F1系列MCUF|ah256B8及以上的型号)3)TIM、ADC模块描述Tmer、ADC模块的触发信号宽度要求解决方法|由于内部有高速和低速两条外围总线,Tmer、ADC模块和其他外设共同使用这两个总线。GD32F103/101系列Fash128KB及以下的型号, Timer、ADC等模块识別触发信号的条件是触发信号宽度大于模块所在总线的时钟宽度5.串口 USART1) USART连续发送数据字节有空闲位带述字节间有空闲位解决方法|对于一般的通讯米说,不会有影响,只对于一般在通讯上有特殊协议的,才会产生数据不准确的情况所以,特定情况,修改程序6.I2C总线1)硬件L2C特殊配置述GD的C相对STM的来说要少一个标志位解决、宏地址定义改交方法2、硬件I2C在会在向从机发送7bits地址完成后,从札还没来得及识别。(看客户应用)我们可以在发送完7bits后加个延时,让从机完全识别I2C Send7bitAddress(I2C1, EEPROM ADDRESS, I2C Direction TransmitterintOfffhile(i --3、检测ADDR不能使用I2 C Checkevent函数,因为他会清除ADR,可以使用I2 C Get FlagStatus函数就是把while(! I2C CheckEvent(I2C1I2C EVENT MASTER TRANSMITTER MODE SELECTED))Ey while(! I2C GetFlagStatus(I2C1, I2C FLAG ADDR))4、还有个关于编程步骤的严谨性,跟STW想比,我们是先 Clcar ack,再 Clear Arrd。7.ADC采集1)ADC采样设置述ADC启动解决方法|分三个方面时写入后,需要等待一段时间,如果用库的话就在 ADC CMD后面加20us左右的延付如果采用中断获得采样数据后,需要软件清除中断。8. SDio1) SDIO DAT3pin的在1 bit bus mode和4 bit bus mode下的配置摧述1、SD|O在1 bit bus mode下,DAT3pin是低电平,这样会导致 SD Card进入SP!模式。原因:初始化失败的原因主要是因为GD32的芯片SDO的DAT3∏存在BUG2、在4位模式下,通过上面的方法,程序能止常初始化,但不能正常读写SD卡原因:因为DAT3∏在前面已经配置成推挽输出,所以在4位模式下,不危正常读下。在调用4位模式前,把DAT3的端凵配置成复用推挽输入即可解决问题解决方法「1、1 bit bus mode的解决方法:建议在使能之前,先把配置成推挽输出,)且要置成高电平,使保持高电平即可2、4 bit bus mode的解决方法:在调用4位模式前,把DAT3的端口配置成复用输出即可解决问题。2)程序在刚烧完后能正常读写SD卡,断电再上电后,SD卡初始化失败,需要手动复位一次后才正常描述在某些SD卡中,GD32断电再上电,会引起SD卡上的时钟信号不正常,导致SD卡发送命令失败。解决方法在程序中,打开时钟后,增加一小段延时,以保证下时钟信号稳定。这个延时添加的地方:在即的配置文件中,然后在这个函数中找到就在这个后面加个延时。10. USBA, USB OTG1)客户使用的原工程时需要注意几点解|1、在中,增加如下图红色字体语句for (1=0; 18; i++) EPli= GetEndPoiNT(i)for(i=0:iregs. HC REGS [num]->HCCHAR, hcchar d3 2)pdev->host hc Status =HC NAK而V2.1.0版本的NAK处理过程如下else if (hcint b nak)if(hcchar b. eptype = EP TYPE_ INTR)UNMASK HOST INT CHH(num)USB OTG HC Halt(pdev, numelse if ((hcchar. b. eptype = EP TYPE CTRL)(hcchar b eptype = EP_ TYPE BULK))A re-activate the channel *hcchar, b chen =1hcchar b chris =0USB OTG WRITE REG32(&pdev->regs. HC REGS [num]->HCCHAR, hcchar d32)pdey->host HC Status [num]=HC_NAKCLEAR HC INT(hcreg, nak)唯一的区别就是 CLEAR HC INT( here,nak)的位置,在Ⅵ1.0.0版本中对于CTRL和BUK端点的NAK中断没有清除NAK,我们的芯片会因此产生多次IN传输的请求,导致数据传输错误。改为V2.1.1的写法后传输正常。(注意 HC Status在V2.1.0是数组,在Ⅵ1.0.0是单个数据,直接拷贝的话要去掉后面的[num])B.USB外设的工作频率有限制摧述有最低工作频率的要求,也就是APB1分频后的时钟必须大于12MHz,比如HCLK为56MHz,APB1的最大分频系数为4,56/4=14MHz,可以正常工作。11 SPI1)输入与输出配置要求(STM32不需要如此要求)解决丨GD32在使用SP时,o的配置必须严格遵守主从模式下的输入与输出配置,而方法STM32无此要求,相关代码如下主机模式下|o配置(主机以SP为例):GPIO InitStructure gPio Mode gPio Mode af plGPIO_ Init Structure GPIo Speed GPlO Speed 50MHzGPIO InitStructure. GPio Pin= GPlO Pin 5 GPIO Pin_ 7;GPIO Init(GPIOA, &GPIO InitstructureGPio Init Structure gPio Mode gPio Mode IN floating:GPio InitStructure gpio Pin gpio pin 6GPIO Init(GPIOA, &GPIO InitStructure)从机模式下o配置(从机以SP2为例)GPIo Init Structure GPio Mode gPlo Mode IN FloatingGPIO InitStructure GPIO Speed= GPl Speed 50MHzGPIO_InitStructure GPIO_ Pin GPIO Pin_13 GPIO_ Pin_15GPIO Init(GPIOB, &GPIO InitStructure)gPio Initstructure gpio mode gpio mode af pp.GPIO InitStructure. GPio Pin= GPIo Pin 14:GPIO_Init(GPIOB, &GPIO_Initstructure);3)在GD32的SP的时钟信号,空闲状态需要配置成高电平,以保证数据的稳定性,具体代码如下:红色字体代码解决SPI_ InitStructure SPl Direction =SPI_ Direction_ 2Lines fullDuplex;方法SPI InitStructure SPl Mode SPi Mode master.SPI Initstructure SPl Data Size= SPl Data Size 8bSPlInitStructure SPl_CPOL= SPI CPOL HighSPl Initstructure SPl CPHA= SPI CPHA 2EdgeSPI InitStructure SPI NSS= SPI NSS SoftSPI InitStructure SPl BaudRate Prescaler =SPI Baud Rate Prescaler 256:SPI Initstructure, Spi FirstBit= SPI FirstBit MSBSPI InitStructure SPl CRCPolynomial =7;SPl Init(sPl1, &SPl Initstructure);4)当作为从机时,在GD32中,时钟信号必须为8的整数倍。例如:红色字体代码解决SPI_InitStructure SPl_ Direction =SPl_ Direction_ 2Lines_ Full Duplex;方法SPI InitStructure. SPl Mode= SPl Mode MasterSPI InitStructure SPSPi Data Size 8SPl InitStructure SPl CPOL= SPI CPOL High;SPI Init Structure. SPl CPHA SPI CPHA_ 2EdgeSPI Initstructure SPl NSS= SPI NSs SoftSPI Initstructure Spl BaudRatePrescaler= SPl BaudRatePrescaler 256SPI InitStructure. SPl FirstBit= SPl First Bit MSBSPl Initstructure SPl CRCPolynomial =7;SPI Init(SPI1, &SPl InitStructure)5)在GD32中,不能使用SPLS_FLAG_BSY该位来判断SP总线数据是否接收或发送完成12.看门狗1)进入SToP模式前打开看门狗,通过RTc的ALR唤醒后,程序会不断被复位的现像摧述WDG内部有个 Reload信号,KEY奇器写AAA会使其拉高,过段时间自动拉低。在拉底之前进入STOP状态会使 Reload信号一直为高,等到退出SToP后也保持为高,之后再写AAAA没有办法让 Reload产生上升沿,也就没办法更新计数器了解决方法「进STOP之前不要 Reload,也可以调整下程序的顺序,把WwDG的配置放到RIC配置之前,效果是一样的。
- 2021-05-06下载
- 积分:1
产品经理必懂的技术那点事儿.pdf
《产品经理必懂的技术那点事儿》全新pdf版本,辅助产品经理更好胜任工作,你值得拥有!产品经理必懂的技术那点事儿唐韧著電子工業出版Publishing House of Electronics Industry北京 BEIJING内容简介本书以非技术背景产品经理了解技术为主题,将技术知识以简单并且易于理解的方式讲述出来,帮助非技术背景产品经理了解技术、学习技术,旨在帮助产品经理高效地与技术人员进行沟通与合作。本书主要内容围绕产品经理需要了解的互联网基础技术知识展开,涉及客户端服务器端、数据库及一些数据处理知识。同时,还就产品经理需具备的一些软实力,例如沟通能力和解决问题的能力进行了详细介绍。本书适合非技术背景的产品经理、运营、市场等互联网岗位的读者阅读,也适合想了解产品经理工作及准备从其他职能转型为产品经理的人阅读。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CP)数据产品经理必懂的技术那点事儿/唐韧著.一北京:电子工业出版社,2017.1ISBN978-7-121-30268-8.①产…Ⅱ.①唐…Ⅲ.①企业管理一产品管理ⅣV.①F273.2中国版本图书馆CIP数据核字(2016)第265110号策划编辑:郑柳洁责任编辑:郑柳洁印刷:北京季蜂印刷有限公司装订:北京季蜂印刷有限公司出版发行:电子工业出版社北京市海淀区万寿路173信箱邮编:100036开本:720×10001/16印张:1.25字数:200千字版次:2017年1月第1版印次:2017年1月第1次印刷定价:59.00元凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,8825888质量投诉请发邮件至zIts@phei.com.cn,盗版侵权举报请发邮件至dbqq@phei.com.cn本书咨询联系方式:010-51260888819faq@phei.com.cn推荐序2010年,我创办了人人都是产品经理(www.woshipm.com)社区,至今已经6年这6年来,我接触最多的就是产品经理。我很少在外抛头露面,通常只会在人人都是产品经理社区创建的上百个产品经理交流群里活跃,因此经常会被大家抓着问问题,其中被问最多的一个问题就是“产品经理需要懂技术吗?懂到什么程度其实这是一个比较有争议的问题,没有正确答案,你说需要懂,也对;说不需要懂,也没错。以我个人的从业经历而言,我倾向的答案是产品经理需要“懂”技术在大学里,没有产品经理这个专业,所以绝大部分产品经理都是半路出家;早期的互联网公司基本都是以技术为中心驱动产品,因此在很多公司,产品经理这个角色都是技术或者项目经理兼任,他们都有一定技术背景。随着互联网的迅猛发展,以技术为中心逐步走向以产品和用户为中心,尤其是在乔布斯发布 Phone3Gs以后,各大互联网公司CEO都说自己是产品经理,于是产品经理就火起来了,从此一发不可收拾。接下来出现的情况就是一大波从事技术、运营、设计、编辑、市场的人转型做了产品经理,非技术职位转型做产品经理占了绝大部分。因为没有技术门槛,越来越多的大学生也都选择了产品经理职位,从产品经理的演变来看,毫不夸张地说,绝大部产品经理必懂的技术那点事儿分产品经理是不“懂”技术的。注意,我特意把懂这个字加了引号。因为“懂”技术不等于要会写代码。这里有一个误区,很多产品经理听别人说产品经理需要懂技术,不懂技术就会……,而感到非常焦虑,非常着急,就去买了一大堆技术相关书籍( JavaScript、PHP、Java、 MySQL等各种从入门到精通的宝典),然而能坚持看完、看明白的人微乎其微,因为技术类书籍是有门槛的,还非常枯燥,不像产品和运营类书籍,贴近生活,通俗易懂,谁都可以看明白。因为我是站长出身,做了十来年站长,对各种开源系统非常熟悉,也做过几十个网站,大家都知道做站长的人通常都是一个人能搞定所有的事情(产品、设计、运营推广、技术、运维、内容等),于是很多人跟我说:“老曹,要不你写本产品经理能读懂的技术书籍吧,因为你懂技术通产品,这书你写再合适不过了。”每次遇到这样的提议,我都非常尴尬,这对我来说挑战太大,但我一直有一个梦想,组织几个懂产品的技术兄弟一起写一本产品经理的技术科普书。直到今天,我的梦想将被实现。帮我实现梦想的人不是我自己,而是本书作者唐韧同学。唐韧是人人都是产品经理社区的专栏作家,在平台发布了很多作品,其中篇《我是如何从程序员一步一步走向产品经理》的文章备受认可,他本人也是技术转型产品经理的优秀代表。希望本书能为从事产品经理的同学对技术的认知有更好的帮助,产品经理学习技术不是为了在技术人员面前证明你很牛,而是为了更好地与技术人员沟通需求、更好地合作,一起做好产品。人人都是产品经理创始人、起点学院院长@老曹前言我为什么写这本书我是从技术开发转型为产品经理的,在转型的过程中对于技术背景的思维方式和产品背景的思维方式有了一些个人的认识。在做技术开发的几年里,我从纯技术的角度去理解问题;转型做产品经理后,我带着技术背景去处理与产品相关的业务、运营和市场问题,用一种全新的角度去看待产品。在做产品的过程中更多地是与工程师打交道,面对一群专业性很强且逻辑思维很强的群体,产品经理的内功就显得尤为重要。在实际工作中,我也与非技术背景的产品经理合作,发现对非技术背景的产品经理来说,技术知识的缺乏是硬伤,由此会带来对产品实现的理解与工程师的理解偏差过大的问题。同时,也会造成一些沟通不畅的问题。如果你是一位非技术背景的产品经理,在工程中可能会遇到对产品技术实现方案不理解的情况。工程师跟你沟通时所用的技术语言你完全听不懂,自己精心设计的产品方案拿到评审会评审时,被工程师批判得体无完肤。这些问题的出现其实都归结于非技术背景的产品经理在技术知识上的信息不对称,持续处于这种状态会严重阻碍工产品经理必懂的技术那点事儿作能力的提高。对业务、运营、市场背景的产品经理来说,增加对基本技术知识的了解能在实际工作中起到很大的帮助作用。这些使我产生了写作本书的想法,本书力求通过通俗易懂的方式讲解基本技术原理,减小非技术背景产品经理与工程师之间的知识差距,使合作和沟通更顺利,同时也提高产品经理的产品内功。对非技术背景产品经理来说,在与工程师的合作过程中,掌握一些基础技术知识显得尤为重要,对于技术的理解可以不用深入到实现层面,但要对基本原理及产品背后的整体技术架构心中有数。产品经理属于信息上游,在拿自己的产品想法与工程师沟通和推动产品实施的过程中,对技术要有一定的了解,这就好比手上多了一把好武器,能让问题顺利解决让产品不断向前发展。本书的目的在于通过浅显易懂的方式,面向非技术型产品经理讲解基础技术知识,打开技术领域这一神秘的大门,使非技术背景产品经理在产品工作中更加游刃有余。产品经理的工作内容涉及面广,而且对个人综合能力的要求高,要做好产品经理就需要涉猎广泛,具备更多的横向知识体系,同时在产品这一纵向知识体系内做深做精。本书可作为产品经理平时学习技术的基础资料,也可作为工具手册,希望本书能助力非技术背景产品经理开展工作。书中内容不涉及很深很具体的技术内容,主要以基本技术概念和实现原理介绍为主,配合一些具体例子加深读者的理解,力求帮助非技术背景的产品经理对具体的技术知识有一个整体的认识,在设计产品或者与工程师沟通合作的过程中能更加顺畅。技术能力是产品经理的核心技能之一,但不是全部,产品经理的职责是通过产品创造用户价值和商业价值,了解用户、发掘需求并持续对产品进行优化才是产品经理的使命如何阅读本书读者在阅读本书时,可以通过理解技术的一些基本原理反观产品设计的细节。非技术背景的产品经理在阅读本书时可以结合自己在实际工作中遇到的技术问题或者是与工程师沟通产品方案时所遇到的技术挑战重现当时遇到问题的场景。读完本书前言后,重新审视当时遇到的问题在现在是否能很好地处理,以场景化的方式结合自身工作中的问题,然后从本书中寻找答案,总结并且复盘,这样能对自己在技术知识方面的欠缺有一个比较好的补充和提升作用。本书第1章介绍了产品思维与技术思维的具体表现和差别,有利于产品经理站在不同的角度审视产品。第2章是对互联网历史和基础技术知识的介绍,为非技术背景的产品经理科普互联网的简要发展历史及互联网技术和产品的几个阶段性特点第3章从理解原理的角度向非技术背景产品经理介绍编程语言的内容。本章的目的并不是让产品经理学会编程,而是希望产品经理通过了解编程语言的基本原理,了解技术产品的实现逻辑及工程师思考问题的基本逻辑。第4章介绍数据库的基本内容,数据库作为数据的存储和处理中心,在产品的大版图里不可或缺,产品经理了解数据库的一些基本知识能增加对产品的全盘了解(从界面到数据)。第5章以介绍主流移动平台的一些基本技术内容为主,目的在于让非技术背景的产品经理了解视觉界面下的实现细节,降低与工程师的沟通成本。第6章介绍了服务端的基本内容,服务端作为大后方,在产品技术体系内扮演着极其重要的角色,产品经理了解服务端的典型技术知识有助于从系统架构的层面理解产品设计,知道什么样的产品设计能降低技术实现难度和成本。第7章是从数据的角度观察产品,产品经理对数据的敏感度决定了产品的优化方向。从本章中产品经理可以了解到不同维度的数据标准和基于数据驱动的产品设计方法第8章是对产品需求文档的一个格式和内容介绍,力求为产品经理提供一个可参考的产品需求文档样式。第9章将内容重点放在沟通上,产品经理需要与各方沟通,其中的沟通技巧和沟通侧重点会在本章详细介绍。第10章介绍了产品经理的不同类型和成长进阶的一些经验。产品经理必懂的技术那点事儿第11章重点对解决问题这一话题进行了分析,以聚焦答案的解决问题方式探究问题的解决方案,本章能提供给产品经理一种新的解决冋题的方法,值得一读。在写作本书的过程中,我发现自己需要学习的东西还很多,非常感谢读者选择本书。作为产品经理,做任何事情都是一个持续优化和完善的过程,对于本书中存在的不足希望得到读者的指点和帮助,也希望同为产品经理或者即将成为产品经理的你,一起在奋斗的路上寻找更高的那一个里程碑!读者可以添加我的微信公众号 nantang007与我交流沟通,也欢迎读者多提宝贵意见。唐韧2016年10月3日于北京▲Vl
- 2021-05-06下载
- 积分:1