这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » (NRF24L01驱动成功)hanshuyujifen2的 ARM DIY进程贴

共191条 9/20 |‹ 7 8 9 10 11 12 ›| 跳转至
高工
2012-04-22 21:30:48     打赏
81楼
DS18B20调试中
弄了一晚上没弄出来

高工
2012-04-22 23:58:33     打赏
82楼

单总线,需要耐心


高工
2012-04-23 00:02:39     打赏
83楼
刚才摸了下18B20的片子,烫手了。。。。。
睡觉明天再弄了

高工
2012-04-23 07:53:19     打赏
84楼
LZ的DIY做得不错,赞一个~!继续加油~!

高工
2012-04-23 11:33:08     打赏
85楼

靠,焊反了吗,伙计~,平面朝右


高工
2012-04-23 12:16:10     打赏
86楼
刚调过来了。靠三用表加数据手册和原理图。 晚上继续弄

菜鸟
2012-04-23 15:52:34     打赏
87楼
lz 请教个问题 lcd 读写数据时怎么些以前用的这个函数 #define LCD_Write(LCD_DATA) {\ GPIO_Write(GPIOE, ((GPIOE-ODR&0XFF00)|(LCD_DATA&0x00FF)));\ GPIO_Write(GPIOE, ((GPIOE-ODR&0X00FF)|(LCD_DATA&0xFF00)));\ } //数据输出 可是现在数据总线与单片机的连接变了 不会整了

高工
2012-04-24 21:29:56     打赏
88楼
为了能用示波器看到系统时钟,决定将系统时钟输出到MCO引脚上去。
弄了一晚上,看见波形了。
首先建立空的工程,将下面三行代码注释掉:
                ;IMPORT  SystemInit          ;删除SystemInit自己写RCC初始化函数
                ;LDR     R0, =SystemInit
                ;BLX     R0    

下面是设置函数,使用HSI作为系统时钟,不实用PLL,直接将HSI输出到MCO引脚:
void My_RccInitMCOHSI(void)
{

    uint8_t temp;

    My_Rcc_DeInit();
    RCC->CR |= 1<<0;  //复位HSION  开启内部时钟;其实内部时钟不用管的,开机自动使用内部时钟。

    while(!(RCC->CR>>1));    //检查HSI是否就绪
    RCC->CFGR &= (~0x03);     //清零CFGR的0、1位  HSI作为系统时钟   
    while(temp!=0x00)     //读取CFGR的2、3为,判断是否是HSI作为系统时钟设置
    {  
        temp=RCC->CFGR>>2;
        temp&=0x03;
    }  
    //此时HSI已经成为系统时钟
    //HSI时钟就绪后,直接输出到MCO(PA8)
    RCC->APB2ENR |= 1<<2;    //使能PA时钟
    RCC->APB2ENR|=1<<5;    //使能PORTD时钟   
   
    GPIOA->CRH&=0XFFFFFFF0;
    GPIOA->CRH|=0X0000000B;//PA8 推挽输出(MCO)

//    //设置MCO输出内部HSI时钟
    RCC->CFGR |= 5<<24;       //MCO输出HSI时钟
    //RCC->CFGR |= 4<<24;    MCO输出系统时钟SYSCLK
    //此时就可以在PA8即MCO引脚看见输出波形了   对比下,两者是一样的。
}
下边是示波器出来的图:


示波器探针位置,插到PA8上去。已经印出来了,没焊,探针刚好插进去


高工
2012-04-25 00:33:58     打赏
89楼

HSE直接作为SYSCLK。与HSI相似
设置方法如下,代码中有注释:
void My_RccInitMCOHSE(void)
{
 uint8_t temp;
 My_Rcc_DeInit();
 RCC->CR |= 1<<16;  //开启HSEON  开启外部时钟。
 while(!(RCC->CR>>17));    //等待HSE就绪

 //选择HSE作为系统时钟
 RCC->CFGR |= 0x01;

 while(temp!=0x01)     //读取CFGR的2、3为,判断是否是HSE作为系统时钟设置
 {  
  temp=RCC->CFGR>>2;
  temp&=0x03;
 }  
 //此时HSE已经成为系统时钟
 //HSE时钟就绪后,直接输出到MCO(PA8)
 RCC->APB2ENR |= 1<<2; //使能PA时钟
 GPIOA->CRH&=0XFFFFFFF0;
 GPIOA->CRH|=0X0000000B;//PA8 推挽输出(MCO)

 //设置MCO输出内部HSE时钟
 RCC->CFGR |= 0x06<<24;    //MCO输出HSE时钟
 //RCC->CFGR |= 4<<24; MCO输出系统时钟SYSCLK
 //此时就可以在PA8即MCO引脚看见输出波形了   对比下,两者是一样的。
}

按照惯例,最后是图片。我使用的是12M的晶振。



高工
2012-04-25 00:53:45     打赏
90楼
PLL部分只放代码和图,刚才写了半天,提示2分钟只能提交5次信息,然后就没了。

郁闷的不想再写了

void My_RccInitMCOPLL(uint8_t PLL)
{
    uint8_t temp;
    My_Rcc_DeInit();
    RCC->CR |= 1<<16;  //开启HSEON  开启外部时钟。
    while(!(RCC->CR>>17));    //等待HSE就绪

    //选择HSE作为系统时钟
    //RCC->CFGR |= 0x01;
    //设置PLL倍频数
    PLL -= 2;       //根据PLL倍频系数与RCC->CFGR的18到21位得出(PLLMUL)
    RCC->CFGR |= PLL<<18;
    RCC->CFGR |= 1<<16;  //HSE作为PLL时钟源

    RCC->CR |= 1<<24;
    while(!(RCC->CR>>25));//等待PLL锁定
    //选择PLL输出作为系统时钟源   
    RCC->CFGR |= 0x02;      

    while(temp!=0x02)     //读取CFGR的2、3为,判断是否是HSE作为系统时钟设置
    {  
        temp=RCC->CFGR>>2;
        temp&=0x03;
    }  
    //此时HSE已经成为系统时钟
    //HSE时钟就绪后,直接输出到MCO(PA8)
    RCC->APB2ENR |= 1<<2;    //使能PA时钟
    GPIOA->CRH&=0XFFFFFFF0;
    GPIOA->CRH|=0X0000000B;//PA8 推挽输出(MCO)

    //设置MCO输出内部HSE时钟
    RCC->CFGR |= 0x07<<24;       //MCO输出HSE时钟
    //RCC->CFGR |= 4<<24; //    MCO输出系统时钟SYSCLK
    //此时就可以在PA8即MCO引脚看见输出波形了   对比下,两者是一样的。
}










共191条 9/20 |‹ 7 8 9 10 11 12 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]