[ZLG-MCU] ST和Luminary对比

[复制链接]
5424|25
 楼主| jian14 发表于 2008-4-12 09:55 | 显示全部楼层 |阅读模式
我用了Luminary一段时间,感觉是很实在的单片机,这是我了解的一些情况:<br /><br />ST&nbsp;Cortex-M3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Luminary&nbsp;Cortex-M3<br /><br />72MHz时钟,但FLASH是双周&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50MHz单周期指令。<br />期的,实际指令只有36MHz。<br /><br />12位AD,但有3bit误差,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10位AD,1bit误差。&nbsp;<br />实际只有9位性能。<br /><br />定时器较多。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;定时器较少。<br /><br />PWM有死区、刹车功能。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PWM有死区、刹车功能。<br /><br />有USB/DMA。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zlgmcu说将要出USB/DMA。<br /><br />没有以太网。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;带FIFO的以太网。<br /><br />应用方案较多。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;应用方案中等。<br /><br />没有MPU。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有MPU。<br /><br />功耗低&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;功耗较大。<br /><br />EMC不清楚&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我测试过EMC非常好(估计是电源和地线多)<br /><br />不带外部总线&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不带外部总线<br /><br />&nbsp;<br />
香水城 发表于 2008-4-12 10:14 | 显示全部楼层

声明:此处对STM32的描述有误,过于片面

<br />“72MHz时钟,但FLASH是双周期的,实际指令只有36MHz。”这种说法与事实严重不符!<br /><br />请看下面两个帖子:<br />&nbsp;&nbsp;<font color=#3366CC>STM32的代码,跑在ram里快?还是跑在flash里快?</font><br />&nbsp;&nbsp;<font color=#3366CC>STM32从Flash中运行程序的时序分析</font>&nbsp;13、14楼<br /><br /><hr>关于“50MHz单周期指令”的描述属于概念不清!<br /><hr>关于STM32的AD精度问题,我将另有说明,这个参数被许多人曲解。
zheng79 发表于 2008-4-12 10:24 | 显示全部楼层

我实测过

STM32跑72MHz比36MHz快不了一倍.<br />STM32跑72MHz可能比LM3S跑50MHz还要慢(浮点数运算)<br /><br />测试环境<br />软件:keil&nbsp;ARM3.11&nbsp;第二级优化&nbsp;<br />LM3S硬件:&nbsp;EasyARM8962开发板&nbsp;测量LED3闪烁周期<br />STM硬件:EK-STM32F开发板&nbsp;测量LD2闪烁周期<br /><br />LM3S程序:<br /><br />#include&nbsp;&quot;hw_memmap.h&quot;<br />#include&nbsp;&quot;hw_types.h&quot;<br />#include&nbsp;&quot;gpio.h&quot;<br />#include&nbsp;&quot;sysctl.h&quot;<br /><br />#define&nbsp;PINS&nbsp;&nbsp;&nbsp;&nbsp;GPIO_PIN_6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//8962开发板LED3<br /><br />#define&nbsp;&nbsp;&nbsp;&nbsp;N&nbsp;(1024)<br /><br />//int&nbsp;a[N],b[N],c[N];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//LED3输出周期76.4ms<br />float&nbsp;a[N],b[N],c[N];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//LED3输出周期401.4ms<br /><br /><br />void&nbsp;test(int&nbsp;t)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;count;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(count=0;count&lt50;count++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;+=&nbsp;count;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltN;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;t*i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltN;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;=&nbsp;t+i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltN;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;=&nbsp;a&nbsp;*&nbsp;b&nbsp;/&nbsp;(i+1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}//void&nbsp;test(int&nbsp;t)<br /><br /><br /><br />/*********************************************************************************************************<br />**&nbsp;Function&nbsp;name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main<br />**&nbsp;Descriptions:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;主函数<br />**&nbsp;input&nbsp;parameters:&nbsp;&nbsp;&nbsp;无<br />**&nbsp;output&nbsp;parameters:&nbsp;&nbsp;无<br />**&nbsp;Returned&nbsp;value:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无&nbsp;&nbsp;&nbsp;<br />*********************************************************************************************************/<br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlClockSet(SYSCTL_SYSDIV_4&nbsp;|&nbsp;SYSCTL_USE_PLL&nbsp;|&nbsp;SYSCTL_OSC_MAIN&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYSCTL_XTAL_6MHZ);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;GPIOPadConfigSet(GPIO_PORTB_BASE,&nbsp;PINS,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPIO_STRENGTH_4MA,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPIO_PIN_TYPE_STD);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;GPIODirModeSet(GPIO_PORTB_BASE,&nbsp;PINS,&nbsp;GPIO_DIR_MODE_OUT);<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinWrite(GPIO_PORTB_BASE,&nbsp;PINS,&nbsp;PINS);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test(100);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinWrite(GPIO_PORTB_BASE,&nbsp;PINS,&nbsp;~PINS);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test(200);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />/*********************************************************************************************************<br />&nbsp;&nbsp;END&nbsp;FILE<br />*********************************************************************************************************/<br /><br /><br /><br />STM32程序:<br /><br />/*&nbsp;Includes&nbsp;------------------------------------------------------------------*/<br />#include&nbsp;&quot;stm32f10x_lib.h&quot;<br /><br />/*&nbsp;Private&nbsp;typedef&nbsp;-----------------------------------------------------------*/<br />/*&nbsp;Private&nbsp;define&nbsp;------------------------------------------------------------*/<br />/*&nbsp;Private&nbsp;macro&nbsp;-------------------------------------------------------------*/<br />/*&nbsp;Private&nbsp;variables&nbsp;---------------------------------------------------------*/<br />/*&nbsp;Private&nbsp;function&nbsp;prototypes&nbsp;-----------------------------------------------*/<br />/*&nbsp;Private&nbsp;functions&nbsp;---------------------------------------------------------*/<br /><br /><br />#define&nbsp;&nbsp;&nbsp;&nbsp;N&nbsp;(1024)<br /><br />GPIO_InitTypeDef&nbsp;GPIO_InitStructure;<br />ErrorStatus&nbsp;HSEStartUpStatus;<br /><br />//int&nbsp;a[N],b[N],c[N];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//EK-STM32F开发板LD2输出周期73.0ms<br />float&nbsp;a[N],b[N],c[N];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//EK-STM32F开发板LD2输出周期420.2ms<br /><br /><br />void&nbsp;test(int&nbsp;t)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;count;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(count=0;count&lt50;count++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;+=&nbsp;count;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltN;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;t*i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltN;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;=&nbsp;t+i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&ltN;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;=&nbsp;a&nbsp;*&nbsp;b&nbsp;/&nbsp;(i+1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}//void&nbsp;test(int&nbsp;t)<br /><br />/*******************************************************************************<br />*&nbsp;Function&nbsp;Name&nbsp;&nbsp;:&nbsp;RCC_Configuration<br />*&nbsp;Description&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;Configures&nbsp;the&nbsp;different&nbsp;system&nbsp;clocks.<br />*&nbsp;Input&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;None<br />*&nbsp;Output&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;None<br />*&nbsp;Return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;None<br />*******************************************************************************/<br />void&nbsp;RCC_Configuration(void)<br />{<br />&nbsp;&nbsp;/*&nbsp;RCC&nbsp;system&nbsp;reset(for&nbsp;debug&nbsp;purpose)&nbsp;*/<br />&nbsp;&nbsp;RCC_DeInit();<br /><br />&nbsp;&nbsp;/*&nbsp;Enable&nbsp;HSE&nbsp;*/<br />&nbsp;&nbsp;RCC_HSEConfig(RCC_HSE_ON);<br /><br />&nbsp;&nbsp;/*&nbsp;Wait&nbsp;till&nbsp;HSE&nbsp;is&nbsp;ready&nbsp;*/<br />&nbsp;&nbsp;HSEStartUpStatus&nbsp;=&nbsp;RCC_WaitForHSEStartUp();<br /><br />&nbsp;&nbsp;if(HSEStartUpStatus&nbsp;==&nbsp;SUCCESS)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;HCLK&nbsp;=&nbsp;SYSCLK&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;RCC_HCLKConfig(RCC_SYSCLK_Div1);&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;PCLK2&nbsp;=&nbsp;HCLK&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;RCC_PCLK2Config(RCC_HCLK_Div1);&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;PCLK1&nbsp;=&nbsp;HCLK/2&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;RCC_PCLK1Config(RCC_HCLK_Div2);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Flash&nbsp;2&nbsp;wait&nbsp;state&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;FLASH_SetLatency(FLASH_Latency_2);<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Enable&nbsp;Prefetch&nbsp;Buffer&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;PLLCLK&nbsp;=&nbsp;8MHz&nbsp;*&nbsp;9&nbsp;=&nbsp;72&nbsp;MHz&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;RCC_PLLConfig(RCC_PLLSource_HSE_Div1,&nbsp;RCC_PLLMul_9);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Enable&nbsp;PLL&nbsp;*/&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;RCC_PLLCmd(ENABLE);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Wait&nbsp;till&nbsp;PLL&nbsp;is&nbsp;ready&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)&nbsp;==&nbsp;RESET)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Select&nbsp;PLL&nbsp;as&nbsp;system&nbsp;clock&nbsp;source&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Wait&nbsp;till&nbsp;PLL&nbsp;is&nbsp;used&nbsp;as&nbsp;system&nbsp;clock&nbsp;source&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;while(RCC_GetSYSCLKSource()&nbsp;!=&nbsp;0x08)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />}<br /><br />/*******************************************************************************<br />*&nbsp;Function&nbsp;Name&nbsp;&nbsp;:&nbsp;NVIC_Configuration<br />*&nbsp;Description&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;Configures&nbsp;Vector&nbsp;Table&nbsp;base&nbsp;location.<br />*&nbsp;Input&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;None<br />*&nbsp;Output&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;None<br />*&nbsp;Return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;None<br />*******************************************************************************/<br />void&nbsp;NVIC_Configuration(void)<br />{<br />#ifdef&nbsp;&nbsp;VECT_TAB_RAM&nbsp;&nbsp;<br />&nbsp;&nbsp;/*&nbsp;Set&nbsp;the&nbsp;Vector&nbsp;Table&nbsp;base&nbsp;location&nbsp;at&nbsp;0x20000000&nbsp;*/&nbsp;<br />&nbsp;&nbsp;NVIC_SetVectorTable(NVIC_VectTab_RAM,&nbsp;0x0);&nbsp;<br />#else&nbsp;&nbsp;/*&nbsp;VECT_TAB_FLASH&nbsp;&nbsp;*/<br />&nbsp;&nbsp;/*&nbsp;Set&nbsp;the&nbsp;Vector&nbsp;Table&nbsp;base&nbsp;location&nbsp;at&nbsp;0x08000000&nbsp;*/&nbsp;<br />&nbsp;&nbsp;NVIC_SetVectorTable(NVIC_VectTab_FLASH,&nbsp;0x0);&nbsp;&nbsp;&nbsp;<br />#endif<br />}<br /><br />/*******************************************************************************<br />*&nbsp;Function&nbsp;Name&nbsp;&nbsp;:&nbsp;main<br />*&nbsp;Description&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;Main&nbsp;program.<br />*&nbsp;Input&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;None<br />*&nbsp;Output&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;None<br />*&nbsp;Return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;None<br />*******************************************************************************/<br />int&nbsp;main(void)<br />{<br /><br />#ifdef&nbsp;DEBUG<br />&nbsp;&nbsp;debug();<br />#endif<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Configure&nbsp;the&nbsp;system&nbsp;clocks&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;RCC_Configuration();<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;NVIC&nbsp;Configuration&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;NVIC_Configuration();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Enable&nbsp;GPIOC&nbsp;clock&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,&nbsp;ENABLE);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;GPIO_InitStructure.GPIO_Pin&nbsp;=&nbsp;&nbsp;GPIO_Pin_7&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIO_InitStructure.GPIO_Mode&nbsp;=&nbsp;GPIO_Mode_Out_PP;<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIO_InitStructure.GPIO_Speed&nbsp;=&nbsp;GPIO_Speed_2MHz;<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIO_Init(GPIOC,&nbsp;&GPIO_InitStructure);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Infinite&nbsp;loop&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPIO_WriteBit(GPIOC,GPIO_Pin_7,Bit_SET);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test(100);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPIO_WriteBit(GPIOC,GPIO_Pin_7,Bit_RESET);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test(200);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />#ifdef&nbsp;&nbsp;DEBUG<br />/*******************************************************************************<br />*&nbsp;Function&nbsp;Name&nbsp;&nbsp;:&nbsp;assert_failed<br />*&nbsp;Description&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;Reports&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;source&nbsp;file&nbsp;and&nbsp;the&nbsp;source&nbsp;line&nbsp;number<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;the&nbsp;assert&nbsp;error&nbsp;has&nbsp;occurred.<br />*&nbsp;Input&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;-&nbsp;file:&nbsp;pointer&nbsp;to&nbsp;the&nbsp;source&nbsp;file&nbsp;name<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;line:&nbsp;assert&nbsp;error&nbsp;line&nbsp;source&nbsp;number<br />*&nbsp;Output&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;None<br />*&nbsp;Return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;None<br />*******************************************************************************/<br />void&nbsp;assert_failed(u8*&nbsp;file,&nbsp;u32&nbsp;line)<br />{&nbsp;<br />&nbsp;&nbsp;/*&nbsp;User&nbsp;can&nbsp;add&nbsp;his&nbsp;own&nbsp;implementation&nbsp;to&nbsp;report&nbsp;the&nbsp;file&nbsp;name&nbsp;and&nbsp;line&nbsp;number,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex:&nbsp;printf(&quot;Wrong&nbsp;parameters&nbsp;value:&nbsp;file&nbsp;%s&nbsp;on&nbsp;line&nbsp;%d
&quot;,&nbsp;file,&nbsp;line)&nbsp;*/<br /><br />&nbsp;&nbsp;/*&nbsp;Infinite&nbsp;loop&nbsp;*/<br />&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;}<br />}<br />#endif<br /><br />/*******************&nbsp;(C)&nbsp;COPYRIGHT&nbsp;2007&nbsp;STMicroelectronics&nbsp;*****END&nbsp;OF&nbsp;FILE****/<br /><br /><br /><br /><br /><br /><br />
香水城 发表于 2008-4-12 12:09 | 显示全部楼层

太好了,有人实测过

3楼的朋友,你能够把你的测试程序、编译软件版本和优化选项以及测试数据发表出来吗?这样大家都可以做一下,免得有人怀疑真假。
zlgarm 发表于 2008-4-12 12:18 | 显示全部楼层

谢谢Jian14的支持

&nbsp;&nbsp;&nbsp;&nbsp;谢谢Jian14的支持。Luminary将要出带USB(OTG型)、DMA的片子;今年内也要出带外部超级总线的片子;功耗也会大大降低。未来的Luminary会越来越好!<br /><br /><br />(zlgarm_zsg)
香水城 发表于 2008-4-12 13:41 | 显示全部楼层

好奇地问一句:什么叫“外部超级总线”?

  
mohanwei 发表于 2008-4-12 14:40 | 显示全部楼层

这年头,吹牛都不用本的……把广告术语都带到技术领域了

  
mj2008 发表于 2008-4-12 20:38 | 显示全部楼层

iic 哪个标准呢?

iic&nbsp;哪个标准呢?<br />
mj2008 发表于 2008-4-12 20:44 | 显示全部楼层

还是两个都用熟了再对比为好

否则容易引起争端,不利于和谐社会的建设
zlgmcu 发表于 2008-4-14 09:00 | 显示全部楼层

Luminary芯片还具有成本优势,批量购买更便宜

(zlgmcu_wdx)
puppyh 发表于 2008-4-14 10:23 | 显示全部楼层

难道ST的芯片批量购买更贵?

这是好笑!
ST_ARM 发表于 2008-4-14 10:30 | 显示全部楼层

请教一个问题

在GPIOPadConfigSet(GPIO_PORTB_BASE,&nbsp;PINS,&nbsp;GPIO_STRENGTH_4MA,&nbsp;GPIO_PIN_TYPE_STD);中,设置GPIO_STRENGTH_4MA是什么意思?<br />请懂Luminary的指教.
wahahaabc 发表于 2008-4-14 12:44 | 显示全部楼层

希望luminary 将I2C总线 “通用调用地址”功能也加入

希望luminary&nbsp;将I2C总线&nbsp;“通用调用地址”功能也加入。<br /><br />前些天发了EMAIL给美国luminary支持,他说:I2C总线的“通用调用地址”在《I2C总线规范》中是一个可选项,所以他们没有实现这个功能。但是这样的解释实在是说不过去,看看NXP的LPC2100系列,LPC2200系列,还有更早以前的P89LPC932都支持该功能。这不能不说是一大缺陷。
zlgarm 发表于 2008-4-14 17:26 | 显示全部楼层

可以

&nbsp;&nbsp;&nbsp;13楼介绍的I2C“通用调用地址”我不熟悉,你可以把它的英文表述告诉我吗?我会向原厂直接提出此建议。<br /><br />(zlgarm_zsg)
zhang..yb 发表于 2008-4-14 17:41 | 显示全部楼层

ST确性价比高

感觉&nbsp;ST确性价比高,倾向用&nbsp;ST.
wahahaabc 发表于 2008-4-14 18:02 | 显示全部楼层

RE 14楼

RE&nbsp;14楼:<br />“通用调用地址”就是广播呼叫地址(general&nbsp;call&nbsp;address),只不过叫法不同而已。参见《I2C总线规范》(ZLG网站)P14
ijk 发表于 2008-4-14 21:24 | 显示全部楼层

1楼总结得很全面

我对ADC比较感兴趣,发现了点新情况:<br /><br />根据ST出的新的数据手册&nbsp;Rev&nbsp;6,其中可以看出AD精度很高,请看,第65页:<br /><br />Table&nbsp;46.&nbsp;ADC&nbsp;accuracy&nbsp;-&nbsp;limited&nbsp;test&nbsp;conditions<br />Symbol&nbsp;Parameter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Typ&nbsp;&nbsp;&nbsp;&nbsp;Max&nbsp;&nbsp;Unit<br />ET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Total&nbsp;unadjusted&nbsp;error&nbsp;&nbsp;±1.3&nbsp;&nbsp;±2&nbsp;&nbsp;LSB<br /><br />关键是,Test&nbsp;conditions为:<br />fPCLK2&nbsp;=&nbsp;56&nbsp;MHz,<br />fADC&nbsp;=&nbsp;14&nbsp;MHz,&nbsp;RAIN&nbsp;&lt&nbsp;10&nbsp;kΩ,<br />VDDA&nbsp;=&nbsp;3&nbsp;V&nbsp;to&nbsp;3.6<br />VTA&nbsp;=&nbsp;25&nbsp;°C<br />Measurements&nbsp;made&nbsp;after<br />ADC&nbsp;calibration<br />VREF+&nbsp;=&nbsp;VDDA<br /><br />而这符合多数人的使用实际情况:VDDA&nbsp;=&nbsp;3&nbsp;V&nbsp;to&nbsp;3.6<br />
mj2008 发表于 2008-4-14 21:32 | 显示全部楼层

控制iic从模式回非应答位是否也是可选功能?

  
jerrywzf 发表于 2008-4-14 21:47 | 显示全部楼层

ST的JTAG会不会出现锁死,LM的特别麻烦!!!

  
pk.kong 发表于 2008-4-15 08:40 | 显示全部楼层

很热闹,进来学习。

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部