-
这个得打电话问公司吧
-
系统时钟为72M,芯片为STM32F105RCT6
__IO uint16_t CCR1_Val = 1000;
配置部分:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period = 2000;
TIM_TimeBaseStructure.TIM_Prescaler = 71;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
// Output Compare Toggle Mode configuration: Channel1
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
// TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Disable);//Disableh和Enable都试过
//TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
// TIM enable counter
TIM_Cmd(TIM1, ENABLE);
// TIM IT enable
TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE);
NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
中断部分:
void TIM1_CC_IRQHandler(void)
{
uint16_t capture = 0;
if (TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET)
{
TIM_ClearITPendingBit(TIM1, TIM_IT_CC1 );
capture = TIM_GetCapture1(TIM1);
// TIM_SetCompare1(TIM1, capture + CCR1_Val );
TIM_SetCompare1(TIM1, CCR1_Val );
}
}
程序大致是这个样子了,请大家看看有什么问题!!
-
0.0
那IAR中在哪里呢?
-
引用楼主 z15881328002 的回复:
我现在有个AMD的风扇没用,我想拿来做电机用,风扇有4根线,都是些什么线?AMD风扇是三相异步电机吗?怎么让他转?负载能力多大?都没有这方面的资料,高手指教下
学习了
-
byte移动的 。应该你的 是8根数据线,你的应该是8*8或者8*16、。、、
-
感谢香帅帮忙.
问题我已经找到了,问题出现在资源的互斥访问上(也就是我对缓冲区没有做好互斥访问的保护工作,呵呵).
由于DMA发送是需要时间的,而从DMA启动到DMA发送结束这段时间里缓冲区里的资源应该是不可以被写入,我原来的代码中就没有对这段时间里的缓冲区做互斥工作,导致缓冲区先前的数据被后面的数据覆盖了.
现在代码修改后就没有原先的问题啦.
-
哎~啥原因啊。。。对比过几个开发板的汇编代码了,WINCE6.0的也看过,代码应该没什么问题啊。。。
-
shangdaoxi 运用CreateFile函数是可以打开设备并得到句柄,但那是针对还未打开的设备吧~~~~
我现在针对的是已经打开的设备,用CreateFile函数只会返回错误,错误原因为该设备已经打开~
-
楼主可以看看我上传的资料:
精典的PID原理与算法源码实例--数据采集礼包V2.0
http://download.eeworld.net/source/1899208
精典的PID原理与算法源码实例--数据采集礼包V2.0
包括详细的PID原理与算法分析,很具体的设计PDF文档。还有配套的完整的源码。
-
MARK最近在看 电源管理~呵呵~一起学习
-
一般来说,坏块的问题交给文件系统去处理.....像INIT.S这样的模块不考虑它
保证写的时候没问题,通常读取的时候也不会出问题的. 还可以在写后进行验证....总之有很多办法避免把问题弄的过于复杂.
-
TM4定时是准确的,但是会影响到其他方面的时间不对啊,例如MAIN里面的DELAY函数,相差也太远了。
执行DELAY函数时会产生中断,中断程序执行完再回来,时间当然变长了呀
你用DELAY延时500MS,而TM4每250US就中断一次,你算算这500MS中产生了多少次中断!
-
不太清楚 有界面的话 估计有点麻烦
-
帮顶
-
1.指令集不同:PIC的汇编是精简指令集,指令少,好学习,不过写程序复杂一些。
2。稳定性不同,PIC的稳定性好,业界知名。
3。价位不同,PIC的比较贵。
4。附加功能差不多,I2C,SPI,AD,DA,COMP等基本上都有。
-
C没有C++的封装和继承,所以程序的架构是会有差别的
-
我的没有灰度等级,bpp就是1啊。
ULONG BitMasks[][3] =
{
{ 0, 0, 0 },
{ 0xF800, 0x07E0, 0x001F },
{ 0xFF0000, 0x00FF00, 0x0000FF },
{ 0x00FF0000, 0x0000FF00, 0x000000FF }
};
SCODE S3C2440DISP::SetMode (INT modeId, HPALETTE *palette)
{
// jylee
RETAILMSG(DBGLCD, (TEXT("++S3C2440DISP::SetMode\r\n")));
if (modeId != 0)
{
RETAILMSG(1, (TEXT("S3C2440DISP::SetMode Want mode %d, only have mode 0\r\n"),modeId));
return E_INVALIDARG;
}
if (palette)
{
RETAILMSG(DBGLCD, (TEXT("Calling EngCreatePalette\r\n")));
// *palette = ourengineCallbacks->EngCreatePalette(PAL_BITFIELDS, 0, NULL, gBitMasks[0], gBitMasks[1], gBitMasks[2]);
int nBPP = m_pMode->Bpp/8 - 1;
switch (m_pMode->Bpp)
{
//case 8:
case 16:
case 24:
case 32:
*palette = ourengineCallbacks->EngCreatePalette (PAL_BITFIELDS,
0,
NULL,
BitMasks[nBPP][0],
BitMasks[nBPP][1],
BitMasks[nBPP][2]);
break;
default :
RETAILMSG(1, (TEXT("ERR !!! S3C2440DISP::SetMode , m_pMode->Bpp = %d \r\n"),m_pMode->Bpp));
}
// This sets the surface address alignment
m_nSurfaceBitsAlign = (m_pMode->Bpp == 24) ? (128 * 3) : 128;
//Allocate our primary surface here
if(NULL == m_pPrimarySurface)
{
if(FAILED(AllocSurface((DDGPESurf **)&m_pPrimarySurface, m_nScreenWidth,
m_nScreenHeight, m_pMode->format, m_pModeEx->ePixelFormat,
GPE_REQUIRE_VIDEO_MEMORY)))
{
RETAILMSG (1, (L"Couldn't allocate primary surface\n"));
return E_INVALIDARG;
}
}
m_pPrimarySurface->SetRotation(m_nScreenWidth, m_nScreenHeight, m_iRotate);
}
DynRotate(m_iRotate);
RETAILMSG(DBGLCD, (TEXT("--S3C2440DISP::SetMode\r\n")));
return S_OK;
}
-
引用 4 楼 jgj58 的回复:
这里有一个相关rtf的网址:
http://bbs.imobile.com.cn/thread-tid-7076945.html
谢谢。不过要自己解析RTF文件有点难度,先看看有没有现成的类库可以解析的,要是没有也只能自己慢慢琢磨了。
-
如果还有其他方式的写入请 高手指教
-
貌似你的是debug的版本,你确定你的BSP在DEBUG版下能编译通过吗?试一下release 的吧,好多的BSP是不支持debug 的