完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
/*头文件*/
#include"STM32f10x_lib.h" /*自定义同义关键字*/ /*自定义参数宏*/ #define Delay(n) while((n)--) //自定义函数宏 //自定义变量 //自定义函数声明 void RCC_Configuration(void); void GPIO_Configuration(void); /******************************** *函数名 :main * 输出结果 : 无 *函数描述 :mian函数 * 返回值 : 无 *输入参数 :无 ***********************/ int main(void) { int i; for(i=0;i<6;i++) { vu32 n=10000000; /*定义延迟参数*/ RCC_Configuration(); /*设置系统 时钟*/ GPIO_Configuration(); /*设置GPIO端口*/ /*GPIOB. 2,GPIOB.3 输出高电平*/ GPIO_ResetBits(GPIOB , GPIO_Pin_10); GPIO_ResetBits(GPIOB , GPIO_Pin_9); Delay(n); /*GPIOB.2 GPIOB.3 输出低电平*/ GPIO_SetBits(GPIOB,GPIO_Pin_10); GPIO_SetBits(GPIOB,GPIO_Pin_9); //while(1); } } /********************** * 函数名 :RCC_Configuration * 输出结果 :无 * 函数描述 :设置系统各部分时钟 * 返回值 ;无 * 输入参数 ;无 ***********************/ void RCC_Configuration(void) { ErrorStatus HSEStartUpStatus; //定义枚举类型变量HSEStartUpStatus RCC_DeInit(); //复位系统时钟设置 RCC_HSEConfig(RCC_HSE_ON); //开启HSE HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待HSE起振并稳定 /*判断HSE起振是否成功,是则进入if()内部*/ if(HSEStartUpStatus==SUCCESS) { RCC_HCLKConfig(RCC_SYSCLK_Div1); //选择HCLK(AHB)时钟源为SYSCLK 1分频 RCC_PCLK2Config(RCC_HCLK_Div1); //选择PCLK2时钟源为HCLK(AHB)1分频 RCC_PCLK1Config(RCC_HCLK_Div2); //选择PCLK1时钟源为HCLK(AHB)2分频 FLASH_SetLatency(FLASH_Latency_2); //设置FLASH延时周期数为2 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);// 使能Flash预取缓存 //选择PLL时钟源为HSE 1分频,倍频数为9,则PLL=8MHZ*9=72MHZ RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); RCC_PLLCmd(ENABLE);/*使能PLL*/ while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);//等待PLL输出稳定 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //选着SYSCLK时钟为PLL while(RCC_GetSYSCLKSource()!=0x08); //等待PLL成为SYSCLK时钟源 } RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //打开APB2总线上的GPIO时钟 } /****************************** *函数名 :GPIO_Configuration * 输出结果 : 无 *函数描述 :设置各GPIO端口功能 * 返回值 :无 *输入参数 :无 ******************************/ void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /*设置GPIOA.2和GPIOA.3为推挽输出,最大翻转频率为50MHZ*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOB,&GPIO_InitStructure); } |
|
相关推荐
6个回答
|
|
你代码中将GPIO口Reset后调用了延时Delay,但是接下来GPIO口Set后却没有调用延时,如果Reset后灯亮,Set后灯灭,那么效果就是灯量保持Delay(n)这么久,然后马上灭了,又马上亮了,继续保持Delay(n)这么久......所以你需要在把GPIO口Set后也延时Delay(n)才行。另外,你for循环只执行6次,也就是说你的灯只会闪烁6次,建议你把这个for循环改成while(1),这样就能看到灯一直闪烁了,还有,把RCC跟GPIO的config函数拿到for循环前面去,不然每次循环都会去初始化一次,初始化会花费一点点时间,所以我上面说的灯马上灭了过后会等待这么一点点时间再亮,这应该就是你所说的灯没有很明显的亮灭效果吧
|
|
|
|
程序不完整,不知道怎么帮你解决
|
|
|
|
程序不完整,不知道怎么帮你解决
|
|
|
|
机电男士 发表于 2016-1-7 11:18 3L大神正解。。。谢谢了,我是新手,刚学习STM32 |
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32进行DMA数据转运,为什么只有A组最后一位数据被转运到B组去?
217 浏览 1 评论
1340 浏览 3 评论
992 浏览 0 评论
嵌入式开发 Win11安装ST-Link 提示 设备描述符请求失败 怎么处理?
1123 浏览 0 评论
1410 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-11 05:31 , Processed in 0.647663 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191