-
讲的不错
-
首先是下载个DFU程序到MCU里面,今后可以用DFU下载升级程序是吧。
-> 正确
-----------------------------------------------------------------------------------------------
1.我看了USB例子,有个UDF的程序,里面有个Key,选择是DFU,还是正常运行是吧?
-> 正确
2.没有Key行吗?
-----------------------------------------------------------------------------------------------
-> 可以,但你要有其它手段来选择DFU或用户程序。
3.经过升级的用户程序可以有USB的通信功能吧??
-----------------------------------------------------------------------------------------------
-> 可以。DFU的USB和用户程序的USB互不干扰
-----------------------------------------------------------------------------------------------
4.ST提供的DFU例子可以用在自己的产品中吧,修改注意些什么?
-> 可以。注意用户代码在Flash中的起始位置、修改中断向量表。
因为系统默认的中断向量表位置被DFU用掉了。
可能还要修改DFU Control Pipe中报告的Flash数量、容量、Page Size
-
以下描述是是touch_sensing.lkf
实在不知道怎么办了,版主主或者哪位大侠可以帮帮忙
------------------------------------------------------------------------------------
# LINK COMMAND FILE AUTOMATICALLY GENERATED BY STVD7
# SHOULD NOT BE MANUALLY MODIFIED
#
# Put you segment configuration here
# define the .share segment when using compact or memory models only
#<BEGIN SEGMENT_CONF>
# Segment Code,Constants:
+seg .const -b 0x8080 -m 0xf80 -n .const -it
+seg .text -a .const -n .text
# Segment Eeprom:
+seg .eeprom -b 0x4000 -m 0x280 -n .eeprom
# Segment Zero Page:
+seg .bsct -b 0x0 -m 0x100 -n .bsct
+seg .ubsct -a .bsct -n .ubsct
+seg .bit -a .ubsct -n .bit -id
+seg .share -a .bit -n .share -is
# Segment Ram:
+seg .data -b 0x100 -m 0x100 -n .data
+seg .bss -a .data -n .bss
#<END SEGMENT_CONF>
# Put you startup file here (it depends on the model used)
#<BEGIN STARTUP_FILE>
crtsi0.sm8
#<END STARTUP_FILE>
# Put your object files here (they depend on you application)
#<BEGIN OBJECT_FILES>
Debug\stm8s_adc1.o
Debug\stm8s_adc2.o
Debug\stm8s_awu.o
Debug\stm8s_beep.o
Debug\stm8s_clk.o
Debug\stm8s_exti.o
Debug\stm8s_flash.o
Debug\stm8s_gpio.o
Debug\stm8s_i2c.o
Debug\stm8s_itc.o
Debug\stm8s_iwdg.o
Debug\stm8s_rst.o
Debug\stm8s_spi.o
Debug\stm8s_tim1.o
Debug\stm8s_tim2.o
Debug\stm8s_tim3.o
Debug\stm8s_tim4.o
Debug\stm8s_uart1.o
Debug\stm8s_uart2.o
Debug\stm8s_uart3.o
Debug\stm8s_wwdg.o
Debug\stm8_tsl_rc_api.o
Debug\stm8_tsl_rc_iodriver.o
Debug\stm8_tsl_rc_multichannelkey.o
Debug\stm8_tsl_rc_services.o
Debug\stm8_tsl_rc_singlechannelkey.o
Debug\stm8_tsl_rc_timerdriver.o
Debug\main.o
#<END OBJECT_FILES>
# Put your library name here (it depends on the model used)
#<BEGIN LIBRARY_FILES>
libis0.sm8
libm0.sm8
#<END LIBRARY_FILES>
# Put your interrupt vectors file here if needed
#<BEGIN VECTOR_FILE>
+seg .const -b 0x8000 -k
Debug\stm8_interrupt_vector.o
#<END VECTOR_FILE>
#<BEGIN DEFINED_VARIABLES>
+def __endzp=@.ubsct # end of uninitialized zpage
+def __memory=@.bss # end of bss segment
+def __stack=0x3ff
#<END DEFINED_VARIABLES>
-
哈哈,也许楼主没有理解我的用意。
你这是个非典型用法,我们没有测试过,我不敢说一定可行,但从理论上讨论是可行的,所以我说“值得试试看”。
试了不行肯定是死定了;但如果试了可行,而你却没有努力就判死刑,不是很冤枉,
-
受益匪浅啊!
-
[code]
-
十分抱歉! 顶楼中单片机端口的内容打错了,应该更正为:
单片机用的是89C2051, P1.0、P1.1控制1号步进电机,P1.0输出脉冲,P1.1输出高/低电平作方向信号;P1.2、P1.3控制2号步进电机,同理是P1.2输出脉冲,P1.1输出方向信号。脉冲数和方向信号由上位机指定。
-
com 几是有注册表的index值决定的。
-
wince60自带了一个,看帮助文件.
-
why not linuxs
-
ST有能跑wince的ARM为核心的产品。
你说的M系列是什么呀?
-
根本原因是driver的加载机制
一般的芯片方案中都做成了multi-bin情况下,使用storage manager加载flash driver;
而非multi-bin情况下,使用device.exe加载flash driver;
有关这一部分内容可以看一下存储管理的源代码
-
只能自己写
-
7楼回答正确
-
大牛也,膜拜!
-
对齐方式确实有个选项,一个是4,一个是8,但这两个都不影响使用吧?默认的选项就是4字节对齐。
有影响,这个应该就是pack值选项了(不是align选项),一般的编译器不做规定的时候,默认的pack值是无限大(全部按照自然边界对齐),但C语言中不会存在超过8字节的基础类型(最长就是longlong和double了,也就8字节),因此任何数据类型的自然边界都不会超过8,包括结构体,所以实际上pack值最大也就是8了,因此IAR选择8为pack参数相当于不指定pack值。
如果你选4,则相当于使用#pragma pack(4),这样所有比4字节长的基础类型都是按照4字节为自然边界的,结果自然是20。你可以试试,选择8,应该结果就是24了,并不影响一般数据的地址,但是对结构体长度有影响。
-
M8不带GPS,可以考虑把它加进去
-
模拟器的 File - > Configure… -> shared folder
-
关于43楼的最后一点:牺牲一个ADC输入端口,实时采样基准电压,通过软件修正电源的误差!
如果芯片拥有单独的Vref+引脚,整体能够使用的I/O脚也会少一个,也许少的就是一个ADC输入端口。
-
建议先看书