-
/* 配置模式指示LED */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
GPIO_Init(GPIOD, &GPIO_InitStructure);
这样初始化管脚有什么问题吗?
-
STM32定时器的PWM输入方式测量频率和占空比,是通过计算输入信号上升和下降沿之间的时间实现的,STM32定时器的最高输入频率是72MHz,即它的精度是1/72MHz。
下面以50kHz为例分析一下:如果以72MHz的频率对50kHz的输入信号计数,计数器计满1440个周期刚好是50kHz,假如出现误差或输入信号不是50kHz,倒推计数器数值1441或1439,得到49965.3Hz或50034.7Hz,这里可以看到误差在(34~35Hz)/2之间,达不到你要求的+/-2Hz或+/-0.004%的要求。
结论:如果你认同我上面的分析,则STM32满足不了你的要求。
不知道你用51单片机再加外围分频电路是如何实现±0.004%精度的,请与大家分享一下;也许你计算错了。
-
你还是好好地耐心的查查问题,不必用这么大的红字说你的感觉,前面不是说了吗,不会有你说的这种情况。
你用示波器看看,在有问题时,信号线上的波形是否与你看到的现象一致。 ...
__IO uint8_t buf1[100];
__IO uint8_t buf2[100];
__IO uint8_t rev=0;
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
buf1[rev]=USART1->DR;
rev++;
}
}
void main(void)
{
//初始化代码
while(1)
{
//延时代码部分
if(rev>10)
{
if(DMA_GetFlagStatus(DMA1_FLAG_TC4) != RESET)
{
DMA_Cmd(DMA1_Channel4, DISABLE);
DMA_Configuration();
USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);
DMA_Cmd(DMA1_Channel4, ENABLE);
}
rev = 0;
}
}
}
实验得知:
main里延时代码,如果是大延时,是没有问题的.
很短的延时则会出问题。短延时,当我发送10个以上的字节都会出问题,不信你试试
还有:当把上面的串口1中断接收改成串口2中断接收,还是用BUF1,是没有任何问题的(很短的延时)
你说说是怎么回事?
-
可能是我级别太低吧,我这儿没有高级回复的功能。
只有以下几个功能:
2010-8-6 08:45 | 只看该作者 回复 引用 评分 报告 返回版面 TOP
得分:0
-
可能我概念理解不对。
但是中断直接发送停止位,不等待,导致多个0x70084事件进入中断,
确实会对EEPROM第二次写产生影响。
-
你在xxxx_Data_Setup函数中处理了你要求的命令了吗?
-
感谢两位的帮助,尤其是hao507朋友,一直那么有耐心的回复我。多谢!
问题已解决。
-
好的,我先复习复习C语言
-
http://blog.eeworld.net/jamestaosh/archive/2009/07/14/4348385.aspx
看完这篇文章后了解一些了
-
模拟器是包含在SDK里吗?只要我装了SDK就可以在VS2005里模拟出系统?还是说必须装模拟器+SDK?
-
引用 12 楼 luixing67 的回复:
引用 9 楼 veabol 的回复:
注册表中有关NAND驱动中可能会有分区占用sector数目的设置,也就是设置了分区大小。
这个注册表项是系统使用的,还是我驱动中会读这个注册表项??我在驱动中没有看到有读这个注册表项的。
另外,分区的起始Sector也会在注册表中设置么??
不同的驱动代码不同,分区设置方法也不同,我只是说有这种方式,至于你的是不是这样我也没办法知道。
-
木用的,提供商只给编译好的.o文件,生产商在编到自己的版本里去,哪有代码
-
一不小心搜索到,学习下
-
非常好
-
建议楼主系统的看一下HIVE注册表的资料,
你现在完成的工作并没有真正实现HIVE,
所以不能实现保存。
-
还是不明白您的意思。
“定义数组变量”是怎么定义的?如果是:
int Tem[40];
那么,程序里写Tem=i是不对的,是错的。
还有,你怎么知道Tem的地址是在ox1ofcoo呢?
您所谓的“看到Tem数据里面”,你怎么知道哪里是“Tem数据”呢?
-
STM32、STM8S和STM8L系列的MCU,除了复位状态寄存器和(如果有RTC)RTC的寄存器之外,其它寄存器在看门狗复位和上电复位时的状态是一样的。
复位状态寄存器中有指示复位源的标志,不同的MCU,复位状态寄存器的格式不尽相同。
-
应该把“#pragma interrupt_handler timer0_ovf_isr:7 ”放到main()前,放到main()后相当于没有参加编译,当然不执行.
因为中断和函数不同,函数放在main()后可以.
-
很简单,在板子上要进行飞线。看下原理图就明白了,2个就是电阻阻值不同。
-
是啊,不是个容易得事啊