-
强烈要求增加杭州专场
-
用Atmel-ARM7时候有个地方挺别扭:
串口:我们的半双工应用情况是发送的数据同时回环到接收线上。正常操作是关闭接收中断-》启动发送中断-》发送结束中断-》关闭发送中断-》打开接收中断。而ATMEL的“发送结束中断”是其发送寄存器内数据为空就会产生,其实这个时候只是将发送寄存器内的数据放到移位寄存器,并没有真正送到线上,我们需要动态根据波特率来延时一个字节时间再打开接受中断,这个挺烦。。
串口配置成ISO7816模式时,校验位只能为偶校验,这样在TS反向约定时候有问题。
这个不知道STM32是否可以规避这些问题?
-
这个软件没用过 据说在高速布线上比较好用 帮顶
-
看你想做哪个方向了,嵌入式也是有三个方向的,不同方向要求不一样。
-
怎么没人顶啊
-
引用 3 楼 hiproz 的回复:
VirtualAlloc+VirtualCopy,同时查一下地址的合法性,确认是可以访问的地址
配置ncs2的代码如下
void ConfgnCS2()
{
BOOL RetValue = TRUE;
IOPreg * v_pIOPregs;
v_pIOPregs = (IOPreg *)VirtualAlloc(0, sizeof (IOPreg), MEM_RESERVE, PAGE_NOACCESS);
if (v_pIOPregs == NULL)
{
ERRORMSG(1,(TEXT("For IOPregs : VirtualAlloc failed!\r\n")));
RetValue = FALSE;
}
else
{
v_pIOPregs = (IOPreg *)0xA4500064;//IOP_BASE;//0xB1600000;
}
if (!RetValue)
{
if (v_pIOPregs)
{
VirtualFree((PVOID) v_pIOPregs, 0, MEM_RELEASE);
}
v_pIOPregs = NULL;
}
//Congfig GPIO78 as nCS2
v_pIOPregs->GAFR2 &= ~(3 GAFR2 |= 3
-
引用 6 楼 laorenshen 的回复:
昏了,还有毕业设计专用的,牛呀,老师和公司联合起来骗钱
你不知道现在的社会,哪都能变钱出来嘛!
-
引用 7 楼 shevsten 的回复:
不封装就直接用CreateFile,ReadFile,WriteFile之类的API写吧
对,看看这些函数的用法就清楚了。自己也可以再把它封装一下。
-
WRITE/READ_REGISTER_XXX
-
LZ是想自己写个类似IE的控件吗?
或者网上有第三方的啊。
-
说的好含蓄呀
-
香主高见,拆掉所有电容,更换一个新的晶体后。启动了!
正在继续调查具体原因。
以前用过多次stm32f103c8, rb,rc都没遇到问题,不知道这次为何如此敏感
-
引用 7 楼 njtu_shiyl 的回复:
三星的arm9 (2440)、arm11 (6410)都有这个问题,是ram总线竞争导致的。
那有啥解决办法呢?
-
1. use named event.
2. use point-to-point message queues.
Paul, Chao @ Techware
-
刚开始“datasheet看得不是很明白”,这是正常的。
第一次看datasheet都是先看总体、大概的框框条条就行,
知道了大概有什么内容了,以后在使用时,就具体详细的看。
一般看datasheet是要看好几遍的,才可能全面了解。
-
CDEFINES=$(CDEFINES) -DPRJ_NAME=TEXT("$(PRJ_NAME)")
or
CDEFINES=$(CDEFINES) -DPRJ_NAME="$(PRJ_NAME)"
RETAILMSG(1, (TEXT("PRJ_NAME = %s \r\n"), TEXT(PRJ_NAME)));
现在没平台可试, LZ 就试试看吧.
Paul, Chao @ Techware
-
在uc.h文件中声明如下:
extern int ucMisc_tf();
在ucpli.c 文件中定义如下:
int ucMisc_tf(int data , int reason)
{
switch(reason){
case reason_endofcompile:
// io_printf("called from misctf- Reason End Of Compile \n");
break;
case reason_synch:
ucSynchronize();
break;
default:
// io_printf("default Misctf\n");
break;
}
}
这两者不矛盾么?
请指教,3Q~~!
-
这年头有得做就不错了
-
//******************************************************************************
// MSP-FET430X110 Demo - Basic Clock, Implement Auto RSEL SW FLL
//
// Description: Set DCO clock to (Delta)*(4096) using software FLL. DCO clock
// is output on P1.4 as SMCLK. DCO clock, which is the selected SMCLK source
// for timer_A is integrated over LFXT1/8 (4096) until SMCLK is is equal
// to Delta. CCR2 captures ACLK. To use Set_DCO Timer_A must be
// operating in continous mode. Watch crystal for ACLK is required for
// this example. Delta must be kept in a range that allows possi××e
// DCO speeds. Minimum Delta must ensure that Set_DCO loop
// can complete within capture interval. Maximum delta can be calculated be
// f(DCOx7) / 4096. f(DCOx7) can be found in device specific datasheet.
// ACLK = LFXT1/8 = 32768/8, MCLK = SMCLK = target DCO
// [] To measure SMCLK on P1.4 with the FET, use "Release JTAG on Go"
// in the debugger to h××e access to the port. Then run the code.
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
//
// MSP430F1232
// ---------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P1.4|--> SMLCK = target DCO
//
//
// M. Buccini
// Texas Instruments Inc.
// Feb 2005
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.21A
//******************************************************************************
#include <msp430x12x2.h>
void Set_DCO (void);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x10; // P1.4 output
P1SEL |= 0x10; // P1.4 SMCLK output
Set_DCO(); // Set DCO
while (1);
}
//------------------------------------------------------------------------------
void Set_DCO (void) // Set DCO to selected frequency
//------------------------------------------------------------------------------
{
//#define DELTA 900 // target DCO = DELTA*(4096) = 3686400
#define DELTA 256 // target DCO = DELTA*(4096) = 1048576
//#define DELTA 70 // target DCO = DELTA*(4096) = 286720
unsigned int Compare, Oldcapture = 0;
BCSCTL1 |= DIVA_3; // ACLK= LFXT1CLK/8
CCTL2 = CM_1 + CCIS_1 + CAP; // CAP, ACLK
TACTL = TASSEL_2 + MC_2 + TACLR; // SMCLK, cont-mode, clear
while (1)
{
while (!(CCIFG & CCTL2)); // Wait until capture occured
CCTL2 &= ~CCIFG; // Capture occured, clear flag
Compare = CCR2; // Get current captured SMCLK
Compare = Compare - Oldcapture; // SMCLK difference
Oldcapture = CCR2; // S××e current captured SMCLK
if (DELTA == Compare) break; // If equal, le××e "while(1)"
else if (DELTA < Compare) // DCO is too fast, slow it down
{
DCOCTL--;
if (DCOCTL == 0xFF)
{
if (!(BCSCTL1 == (XT2OFF + DIVA_3)))
BCSCTL1--; // Did DCO roll under?, Sel lower RSEL
}
}
else
{
DCOCTL++;
if (DCOCTL == 0x00)
{
if (!(BCSCTL1 == (XT2OFF + DIVA_3 + 0x07)))
BCSCTL1++; // Did DCO roll over? Sel higher RSEL
}
}
}
CCTL2 = 0; // Stop CCR2
TACTL = 0; // Stop Timer_A
}
-
呵呵,厉害~