完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
初始化void RCC_HSE_Configuration() 之后,温度就读不出来了,,不初始化void RCC_HSE_Configuration(),,温度读的正常,,,这是为什么
//================================================================================================== //================================================================================================== // Name : systick.c // Purpose : sysclock // Version : Ver 1.0 // Author : Nature Power // Date : 20170424 // Hardware: ARM.Cortex M3.STM32F103ZE #include "System_Main.h" /******************************************************************************* * º¯ Êý Ãû : delay_us * º¯Êý¹¦ÄÜ : ÑÓʱº¯Êý£¬ÑÓʱus * Êä Èë : i * Êä ³ö : ÎÞ *******************************************************************************/ double temper; void delay_us(u32 i) { u32 temp; SysTick->LOAD=9*i; //ÉèÖÃÖØ×°ÊýÖµ, 72MHZʱ SysTick->CTRL=0X01; //ʹÄÜ£¬¼õµ½ÁãÊÇÎÞ¶¯×÷£¬²ÉÓÃÍⲿʱÖÓÔ´ SysTick->VAL=0; //ÇåÁã¼ÆÊýÆ÷ do { temp=SysTick->CTRL; //¶ÁÈ¡µ±Ç°µ¹¼ÆÊýÖµ } while((temp&0x01)&&(!(temp&(1<<16)))); //µÈ´ýʱ¼äµ½´ï SysTick->CTRL=0; //¹Ø±Õ¼ÆÊýÆ÷ SysTick->VAL=0; //Çå¿Õ¼ÆÊýÆ÷ } /******************************************************************************* * º¯ Êý Ãû : delay_ms * º¯Êý¹¦ÄÜ : ÑÓʱº¯Êý£¬ÑÓʱms * Êä Èë : i * Êä ³ö : ÎÞ *******************************************************************************/ void delay_ms(u32 i) { u32 temp; SysTick->LOAD=9000*i; //ÉèÖÃÖØ×°ÊýÖµ, 72MHZʱ SysTick->CTRL=0X01; //ʹÄÜ£¬¼õµ½ÁãÊÇÎÞ¶¯×÷£¬²ÉÓÃÍⲿʱÖÓÔ´ SysTick->VAL=0; //ÇåÁã¼ÆÊýÆ÷ do { temp=SysTick->CTRL; //¶ÁÈ¡µ±Ç°µ¹¼ÆÊýÖµ } while((temp&0x01)&&(!(temp&(1<<16)))); //µÈ´ýʱ¼äµ½´ï SysTick->CTRL=0; //¹Ø±Õ¼ÆÊýÆ÷ SysTick->VAL=0; //Çå¿Õ¼ÆÊýÆ÷ } /******************************************************************************* * º¯ Êý Ãû : RCC_HSE_Configuration * º¯Êý¹¦ÄÜ : ×Ô¶¨ÒåϵͳʱÖÓ£¬¿ÉÒÔͨ¹ýÐÞ¸ÄPLLʱÖÓÔ´ºÍ±¶ÆµÏµÊýʵÏÖʱÖÓµ÷Õû * Êä Èë : ÎÞ * Êä ³ö : ÎÞ *******************************************************************************/ void RCC_HSE_Configuration() //×Ô¶¨Òåϵͳʱ¼ä£¨¿ÉÒÔÐÞ¸ÄʱÖÓ£© { RCC_DeInit(); //½«ÍâÉèRCC¼Ä´æÆ÷ÖØÉèΪȱʡֵ RCC_HSEConfig(RCC_HSE_ON);//ÉèÖÃÍⲿ¸ßËÙ¾§Õñ£¨HSE£© if(RCC_WaitForHSEStartUp()==SUCCESS) //µÈ´ýHSEÆðÕñ { RCC_HCLKConfig(RCC_SYSCLK_Div1);//ÉèÖÃAHBʱÖÓ£¨HCLK£© RCC_PCLK1Config(RCC_HCLK_Div2);//ÉèÖõÍËÙAHBʱÖÓ£¨PCLK1£© RCC_PCLK2Config(RCC_HCLK_Div1);//ÉèÖøßËÙAHBʱÖÓ£¨PCLK2£© RCC_PLLConfig(RCC_PLLSource_HSE_Div2,RCC_PLLMul_9);//ÉèÖÃPLLʱÖÓÔ´¼°±¶ÆµÏµÊý RCC_PLLCmd(ENABLE); //ʹÄÜ»òÕßʧÄÜPLL while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);//¼ì²éÖ¸¶¨µÄRCC±ê־λÉèÖÃÓë·ñ,PLL¾ÍÐ÷ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//ÉèÖÃϵͳʱÖÓ£¨SYSCLK£© while(RCC_GetSYSCLKSource()!=0x08);//·µ»ØÓÃ×÷ϵͳʱÖÓµÄʱÖÓÔ´,0x08£ºPLL×÷ΪϵͳʱÖÓ } } //----------------------------------------------------------------------------------- void TIM3_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //ʱÖÓʹÄÜ TIM_TimeBaseStructure.TIM_Period = arr; //ÉèÖÃÔÚÏÂÒ»¸ö¸üÐÂʼþ×°Èë»î¶¯µÄ×Ô¶¯ÖØ×°ÔؼĴæÆ÷ÖÜÆÚµÄÖµ ¼ÆÊýµ½5000Ϊ500ms TIM_TimeBaseStructure.TIM_Prescaler =psc; //ÉèÖÃÓÃÀ´×÷ΪTIMxʱÖÓƵÂʳýÊýµÄÔ¤·ÖƵֵ 10KhzµÄ¼ÆÊýƵÂÊ TIM_TimeBaseStructure.TIM_ClockDivision = 0; //ÉèÖÃʱÖÓ·Ö¸î:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIMÏòÉϼÆÊýģʽ TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //¸ù¾ÝTIM_TimeBaseInitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯TIMxµÄʱ¼ä»ùÊýµ¥Î» TIM_ITConfig( //ʹÄÜ»òÕßʧÄÜÖ¸¶¨µÄTIMÖÐ¶Ï TIM3, //TIM2 TIM_IT_Update , ENABLE //ʹÄÜ ); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //×Ô¼º¼ÓµÄ NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3ÖÐ¶Ï NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //ÏÈÕ¼ÓÅÏȼ¶0¼¶ NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //´ÓÓÅÏȼ¶3¼¶ NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQͨµÀ±»Ê¹ÄÜ NVIC_Init(&NVIC_InitStructure); //¸ù¾ÝNVIC_InitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèNVIC¼Ä´æÆ÷ TIM_Cmd(TIM3, ENABLE); //ʹÄÜTIMxÍâÉè } void TIM3_IRQHandler(void) //TIM3ÖÐ¶Ï { UART1_SendByte(0x00); if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //¼ì²éÖ¸¶¨µÄTIMÖжϷ¢ÉúÓë·ñ:TIM ÖжÏÔ´ { // UART1_SendByte(0x01); // TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //Çå³ýTIMxµÄÖжϴý´¦Àíλ:TIM ÖжÏÔ´ // UART1_SendByte(0x02); temper=readtemp(); sprintf(UART1.TxBuff,"µ±Ç°Î¶ÈΪ£º%0.4lf ¡ærn",temper); UART1.Length = strlen(UART1.TxBuff); for(UART1.Counter = 0;UART1.Counter UART1_SendByte(UART1.TxBuff[UART1.Counter]); } // UART1_SendByte(0x03); // ADC_value(); UART1_SendByte(0x04); } } //========================================--NO MORE--=============================================== ==================================================================================== DS18b20、、、、、、、、、、 #include "System_Main.h" #include "System_Macro.h" /******************************************************************************* * º¯ Êý Ãû : ds18b20_init * º¯Êý¹¦ÄÜ : IO¶Ë¿ÚʱÖÓ³õʼ»¯º¯Êý * Êä Èë : ÎÞ * Êä ³ö : ÎÞ *******************************************************************************/ void ds18b20_init() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG,ENABLE); GPIO_InitStructure.GPIO_Pin=dq; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIO_ds18b20,&GPIO_InitStructure); } /******************************************************************************* * º¯ Êý Ãû : DQININT * º¯Êý¹¦ÄÜ : ÊäÈëÅäÖà * Êä Èë : ÎÞ * Êä ³ö : ÎÞ *******************************************************************************/ void DQININT() //ÊäÈëÅäÖà { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=dq; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIO_ds18b20,&GPIO_InitStructure); } /******************************************************************************* * º¯ Êý Ãû : DQOUTINT * º¯Êý¹¦ÄÜ : Êä³öÅäÖà * Êä Èë : ÎÞ * Êä ³ö : ÎÞ *******************************************************************************/ void DQOUTINT() //Êä³öÅäÖà { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=dq; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIO_ds18b20,&GPIO_InitStructure); } /******************************************************************************* * º¯ Êý Ãû : ds18b20init * º¯Êý¹¦ÄÜ : DS18B20³õʼ»¯Ê±Ðò * Êä Èë : ÎÞ * Êä ³ö : ÎÞ *******************************************************************************/ void ds18b20init() { DQOUTINT();//Êä³ö ds18b20_dq_L; delay_us(480);//ÑÓʱ480΢Ãî ds18b20_dq_H; delay_us(480);//ÑÓʱ480΢Ãî } /******************************************************************************* * º¯ Êý Ãû : ds18b20wr * º¯Êý¹¦ÄÜ : DS18B20дÊý¾ÝʱÐò * Êä Èë : dat * Êä ³ö : ÎÞ *******************************************************************************/ void ds18b20wr(u8 dat) { u8 i=0; DQOUTINT();//Êä³ö for(i=0;i<8;i++) { ds18b20_dq_L; //ÀµÍ delay_us(15);//ÑÓʱ15΢Ãî if((dat&0x01)==1) { ds18b20_dq_H; } else { ds18b20_dq_L; } delay_us(60);//ÑÓʱ60΢Ãî ds18b20_dq_H; dat>>=1;//×¼±¸ÏÂһλÊý¾ÝµÄ·¢ËÍ } } /******************************************************************************* * º¯ Êý Ãû : DS18b20rd * º¯Êý¹¦ÄÜ : DS18B20¶ÁÊý¾ÝʱÐò * Êä Èë : ÎÞ * Êä ³ö : value *******************************************************************************/ u8 DS18b20rd() { u8 i=0,value=0; for(i=0;i<8;i++) { value>>=1; DQOUTINT();//Êä³ö ds18b20_dq_L; //ÀµÍ delay_us(4);//ÑÓʱ4΢Ãî ds18b20_dq_H; delay_us(10);//ÑÓʱ10΢Ãî DQININT(); //ÊäÈëÅäÖà if(GPIO_ReadInputDataBit(GPIO_ds18b20,dq)==1) { value|=0x80;//¶ÁÊý¾Ý ´ÓµÍλ¿ªÊ¼ } delay_us(45);//ÑÓʱ45΢Ãî } return value; } /******************************************************************************* * º¯ Êý Ãû : readtemp * º¯Êý¹¦ÄÜ : DS18B2ζȼĴæÆ÷ÅäÖã¬Î¶ȶÁÈ¡ * Êä Èë : ÎÞ * Êä ³ö : value *******************************************************************************/ double readtemp() //¶ÁȡζÈÄÚÐèÒª¸´Î»µÄ { u16 temp; extern u8 a,b; extern double value1; ds18b20init(); //³õʼ»¯ ds18b20wr(0xcc); //·¢ËͺöÂÔROMÖ¸Áî ds18b20wr(0x44); //·¢ËÍζÈת»»Ö¸Áî delay_ms(800); ds18b20init(); //³õʼ»¯ ds18b20wr(0xcc); //·¢ËͺöÂÔROMÖ¸Áî ds18b20wr(0xbe); //·¢¶ÁÔÝ´æÆ÷Ö¸Áî a=DS18b20rd(); //ζȵĵͰËλ b=DS18b20rd(); //ζȵĸ߰Ëλ temp=b; temp=(temp<<8)+a; if((temp&0xf800)==0xf800) { temp=(~temp)+1; value1=temp*(-0.0625); } else { value1=temp*0.0625; } return value1; } 初始化void RCC_HSE_Configuration() 之后,温度就读不出来了,,不初始化void RCC_HSE_Configuration(),,温度读的正常,,,这是为什么 |
|
相关推荐
1个回答
|
|
那是你的IO频率设置的不对吧
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2105 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1941 浏览 3 评论
4537 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2084 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2599 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:29 , Processed in 0.580447 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号