-
第一个问题:JTDO/TRACESWO/PB3用作GPIO的问题
我是在《8.3.5 JTAG/SWD复用功能重映射》这一节里找到说明的。
在SWJ_CFG[2:0]配置成010,作用是关闭JTAG-DP启用SW-DP,如果此时JTDO/TRACESWO/PB3管脚作为GPIO时有个提示项, 说“I/O口只可在不使用异步跟踪时使用”。
我就不清楚这个异步跟踪指什么?一般用SWD调试,很少会用TRACE功能的,就只用到SWDIO和SWCLK。
第二个问题:关于高电平脉宽捕获测量的问题。
我是看到这个帖子的,https://bbs.eeworld.com.cn/icview-109870-1-1.html。版主在4楼说了一些。
我的想法是下面这样的:
不用PWM输入模式,用普通的输入捕获模式。
先在TIMx_CCER寄存器中写入CC1P=0(上升沿)捕获。
启动中断,在上升沿触发的中断里把TIMx_CCR1的值存下来,把CC1P=1改成下降沿,退出中断。
在下降沿触发的中断里把下降沿的TIMx_CCR1减去上升沿的TIMx_CCR1值,就等于高电平的脉宽了吧?
相当于把定时器当一个实时时钟用,不用重载,轮流配置CC1P=0和1,以在上升和下降沿触发中断,计时器相减获得脉宽。
我想1.5ms的最小脉宽,相对72M的主频,测量起来应该误差不大吧?这样做可否?
感谢版主关注!
-
STM32W开发板哪有?
-
我的fsmc的 设置如下
p.FSMC_AddressSetupTime = 3;
p.FSMC_AddressHoldTime = 3;
p.FSMC_DataSetupTime = 3;
p.FSMC_BusTurnAroundDuration = 0;
p.FSMC_CLKDivision = 1;
p.FSMC_DataLatency = 0;
p.FSMC_AccessMode = FSMC_AccessMode_A;
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM3;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_AsyncWait = FSMC_AsyncWait_Disable;
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM3, ENABLE);
在程序中我定义了一个很大的数组
#ifdef ExtRamOnbord
#define NETSENDFIFO_MAXLEN 131072
#else
#define NETSENDFIFO_MAXLEN 40960
#endif
static U8 NETSENDFIFO[NETSENDFIFO_MAXLEN];
然后在初始化代码中加入
U32 i;
for(i=0;i<NETSENDFIFO_MAXLEN;i++)
NETSENDFIFO[i]=(u8)i;
在调试窗口中看到内存地址为0x68000000开始的地方,赋值NETSENDFIFO[1]的时候0x68000000和0x68000001都变成了0,赋值NETSENDFIFO[1]的时候这两个地址都变成了0x01,赋值NETSENDFIFO[2]的时候0x68000002和0x68000003都变成了0x02,赋值NETSENDFIFO[3]的时候0x68000002和0x68000003都变成了0x03,....执行完后0x68000000 开始的内存值从MDK的窗口看是0x01 0x01 0x03 0x03 0x05 0x05 。。。。
-
重新上电就可以?楼上说的有这可能性,可惜的是我没有接出JTAG口来,看不到它跑到哪里去了!
-
编译器参考也很不错
-
对呀,软件识别地址即可。
-
学习下~~~
-
一切正常就说明你的初始化没问题
-
能不能把2楼你发图的那个资料~完全版上传一下`
在这段时间的学习中~还没有找到stm32 中文的写的那么全的东西~
-
STM32的FSMC接NAND,NAND的容量不是问题,只要多写1、2次NAND的地址就行了,这完全是软件控制的。
倒是需要看看k9f8g08是SLC还是MLC,STM32的FSMC只支持1-bit ECC,接MLC有点问题。
-
Google ,一堆出来。
-
精的话两样都有前途,但想赚大钱如楼上所说就去做生意吧,不然运气不好进了比较差的公司,那个成长的过程是会让人很浮躁的
-
下载ST提供的usart bootloader例程,照着做即可
源码已经比较友好,从main()开始看一遍即可,初始化部分尤其要仔细看。
-
论坛里这方面的资料很多,可以自己找找的
-
参考一下优龙的电路图吧。呵呵
-
要使用USB的ActiveSync,首先USB的驱动要支持,并且组件要选上USB function的Seirial。
且注册表要设置
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"="Serial_Class"
-
gooogleman是说你在代码里把LoadRun函数里的buf = 0x30200000改大后要在DNW时面把那个地址也改成同样大的
另外,你花屏的时候已经加载NK镜像了吗?如果没加载的话应该跟BIB没什么关系吧,没看太懂,不清楚
-
公用体 很好解决这个问题
-
安装什么SDK啊 1175872513这是我的QQ,可以加下我吗
-
论坛里有很多人问过类似的问题,你可以找找那些高人,
http://so.eeworld.net/bbsSearchResult.aspx?q=PPP