最新日志

发表于:2008-7-18 13:57:27
标签:stm32  bug  

0

我的STM32出问题了

#include "stm32f10x_lib.h"
EXTI_InitTypeDef EXTI_InitStructure;
ErrorStatus HSEStartUpStatus;
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);

int main(void)
{


  RCC_Configuration();
  NVIC_Configuration();//到处就进入中断服务程序,然后死机!!!
  GPIO_Configuration();
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource15);
  EXTI_InitStructure.EXTI_Line = EXTI_Line15;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
  while (1)
  {    
  }
}


void RCC_Configuration(void)
{
  
  RCC_DeInit();
  RCC_HSEConfig(RCC_HSE_ON);
  HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
  {
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    RCC_PCLK2Config(RCC_HCLK_Div1);
    RCC_PCLK1Config(RCC_HCLK_Div2);
    FLASH_SetLatency(FLASH_Latency_2);
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
    RCC_PLLCmd(ENABLE);
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {
    }
   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
   while(RCC_GetSYSCLKSource() != 0x08)
    {
    }
  }
   
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO, ENABLE);
}


void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
}


void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  
#ifdef  VECT_TAB_RAM  

  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else

  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);//单步运行到此,会进入中断服务程序,然后就不出来了
}

现象总结:

1:软件中不能开 EXTI15_10_IRQChannel中断,否则死机(如上面程序中铁贴出的一样),
2:如果想用 EXTI15_10_IRQChannel中断,必须使先用串口擦除FLASH,不然不管是用MDK还是IAR都会出现死机,
3:死机现象  程序在配置中断时(如程序中所示)就会进入中断。
4:如果我不开 EXTI15_10_IRQChannel中断,整个芯片运行正常,在IAR和MDK下都很正常,
5: 正常的意思是不需要用事先串口擦除FLASH,直接在IAR或者MDK下载可正常工作

 

我选择ram运行,过程及现象如下:
1:断电配置boot  
2:配置程序
3:上电下载 正常
4:第一次运行 正常
5:软件复位
6:第二次运行(或者单步运行) 死机


7: 断电
8:重复3~7

和flash运行不一样的地方,
flash运行:程序执行配置中断后,立刻进入中断服务程序,然后就出来了,
ram运行:程序执行配置中断后,程序跑飞

在21ic上问了好几天,也没人知道

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(116)
发表于:2008-7-4 16:15:52
标签:无标签

3

STM32 固件库有BUG

在利用I2C读写24C02时发现I2C_InitStructure.I2C_AcknowledgedAddress的值不管是 I2C_AcknowledgedAddress_7bit还是 I2C_AcknowledgedAddress_10bit,用示波器观察波形,其结果都是 I2C_AcknowledgedAddress_10bit。

 

 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(2) | 阅读(87)
发表于:2008-6-24 21:38:06
标签:电源  

0

电源应用设计

从今天起,如果有时间我把这两年的学习经验给大家分享一下,希望和大家多交流交流。

今天我先说说我知道的常用电源,

电源是一个电路系统中最重要的一个环节,电源的好坏直接影响着整个电路系统的成败。就像一个人,不让吃饱饭,肯定没法好好干活,o(∩_∩)o...

列一下各类的特点及使用场合,不过这是我自己的经验,不保证正确!!

1、低电压变换型

78系列:如7805、7808、7812,79系列:如7905、7908、7912等

优点:价格低廉,大概1元一片 稳压效果一般

缺点:输入输出压差较大,电流一般在1A一下,发热较大,效率低。

1117系列:LM1117-3.3等

这个系列的电源芯片属于低压差的,可以产生3.3V、1.8V等电压,可是归类为78系列的改进型,优越点和78系列类似,不过压差减少,效率会提高点。

DC\DC类:如LM2575-5V、LM2575-12V

优点:效率高,发热较少,大流一般在2~3A,价格3~5元

缺点:纹波较大,外围器件多

2、市电变换型

以上是芯片级,功率一般不大,还有很多开关型电源模块,适合大功率的电路系统,现在网上很多这种模块,这些电源模块一般都是220V输入,前不久不用一个30W的电源模块,体积不大,发热也很小,但是很贵,大概90元,当然还有很多便宜的,质量不是太高,功率为30W的大约在40~60左右,

还有一些我们常见的电源为传统的电磁变压器,价格便宜,历史悠久,但是安全性不好,短路后会起火。现在在设计越来越少。

下图是市场上常见的开关电源,体积较大,质量还算可以,可以满足一般应用,价格在50~100元之间

还有一种被成为第三代电源的东西,压电变压器,大家一般很难见到,效率极高,价格便宜,不过还在研究之中,商用的不多。笔记本里好像用到这种东西。

其他的我就没用过,毕竟我刚接触电子设计刚两年也已,以后知道了会补充,大家见笑了。

在设计中,我们根据系统的要求来选用电源,数字电路的抗干扰的能力较强,对于电源的要求也比较弱,用DC\DC和LDO都可以,大流较大时最好选用DCDC芯片,

模拟电路不建议选用DC\DC芯片,因为DC\DC芯片的纹波很大,会对整个电路造成很大的噪音影响。

数字、模拟混合系统是最不好弄的,在一个电路系统中可以使用两种芯片,不过最好在设计PCB时把地隔离开。

说了这么多,还想强调一点,一定要充分重视电源问题,电源的质量直接影响着整个系统的质量

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(127)
发表于:2008-6-15 17:32:44
标签:手持  信号记录仪  单片机  

2

手持式信号记录仪

STM32项目/学习计划表

项目名称  手持式信号记录仪
请点击以下链接更新您的个人资料(包括“职位,部门,单位名称,地址,邮编,电子邮箱,电话”),以便我们能及时联系您并快速发送开发套件。http://space.ednchina.com/member/Register.aspx
联系方式
(邮箱/电话)
为了保证用户隐私,此处已被隐藏
预计实施时间 自  6月22日 到8月20日 计划参加人数  3
背景描述 该计划的背景及其实现的目的、意义
 在测试信号时,某些时候需要记录很长时间的信号,以便于离线分析,示波器完成不了这样的任务,而常规的信号记录仪价格昂贵,手持式的型号更少。所以利用微处理器和大容量的FLASH可以完成这样任务,且成本低廉。
功能描述 详细描述该项目能够实现的功能
 以5MB/s或更高的的采样率记录信号,并保存在储存器中,然后将信号显示在液晶屏上,离线分析其细节信号。
解决办法 预计会遇到的困难和相应的解决办法

 1、储存器储存速度问题

 2、采样率问题

 3、采样精度问题

预期效果

开发项目:预期要解决的问题、达到的经济效益和产品所需数量;

预计要解决的问题:

1、信号高速采集

2、高速储存问题

3、高压保护问题

4、微弱电流信号测量问题

5、处理器处理速度

达到的经济效益:

若实验成功,可在市场上推广,在常规信号的测量记录方面提供新的选择,且可达到低成本,高性价比的测量
学习项目:希望学到的知识或技能,达到哪些实践的目的等。

学习:高速信号处理,高速电路设计

 
时间安排 日  期 进    度    描    述
 6.22-7.22  电路功能设计、元件选型及分立实验
 7.22-8.20  PCB设计及设计改进
   
总结  
备  注

签名:         时间:2008.6.15

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(2) | 阅读(124)
总共 , 当前 /