谁会STM32单片机,单片机c语言程序设计

1475被浏览355020分享邀请回答54848 条评论分享收藏感谢收起26033 条评论分享收藏感谢收起后使用快捷导航没有帐号?
来自ValentinRuhry的创意,这哥们用整整500
STM32 第一个程序,流水灯
本帖最后由 晨星 于
12:37 编辑
相应调用的函数都是固件库里面的
先是main函数/**
&&******************************************************************************
&&* @file& & main.c
&&* @author&&
&&* @version V1.0
&&* @date& & 20xx-xx-xx
&&* @brief& &用3.5.0版本库建的工程模板
&&******************************************************************************
&&* @attention
&&*
&&* 实验平台:野火 V2 开发板
&&* 硬件连接&&C3&&C4&&C5
&&******************************************************************************
&&*/
&&
#include &stm32f10x.h&
#include &delay.h&
#include &led.h&
/**
&&* @brief&&主函数
&&* @param&&无
&&* @retval 无
&&*/
int main(void)
{
& && &&&//初始化用的GPIO口
& && &&&LED_GPIO_Config();
& && &&&while(1)
& && &&&{
& && && && && & /* add your code here ^_^. */
& && && && && & LED1(ON);
& && && && && & delay_1(0X0FFFFF );
& && && && && & LED1(OFF);
& && && && && & LED2(ON);
& && && && && & delay_1(0X0FFFFF );
& && && && && & LED2(OFF);
& && && && && & LED3(ON);
& && && && && & delay_1(0X0FFFFF );
& && && && && & LED3(OFF);
& && &&&}
}
/*********************************************END OF FILE**********************/
复制代码然后看延时函数和&&相应的头文件,,不用解释,都能看懂吧
复制代码#include &delay.h&
void delay_1(__IO u32 Count )
{
& & & & for(;Count!=0;Count--)
& & & & {}
}
#ifndef _DELAY_H
#define _DELAY_H
#include &stm32f10x.h&
void delay_1( __IO uint32_t Count );
复制代码然后是led初始化函数和头文件#include &led.h&
void LED_GPIO_Config(void)
{
& & & & GPIO_InitTypeDef GPIO_InitS
& & & & //晶振启动
& & & & RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC ,
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & ENABLE);
& & & & //初始化对应的GPIO
& & & & GPIO_InitStructure.GPIO_Mode& &= GPIO_Mode_Out_PP ;
& & & & GPIO_InitStructure.GPIO_Pin& & = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
& & & & GPIO_InitStructure.GPIO_Speed&&= GPIO_Speed_50MHz;
& & & & GPIO_Init (GPIOC,&GPIO_InitStructure);
& & & & //先关闭所有led
& & & & GPIO_SetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5);
}
#ifndef _LED_H
#define _LED_H
//头文件引用
#include &stm32f10x.h&
//函数声明
void LED_GPIO_Config(void);
#define ON&&0
#define OFF 1
#define LED1(a) if (a) \
& & & & & & & & & & & & & & & & & & & & & & & & & & & & GPIO_SetBits(GPIOC,GPIO_Pin_3); \
& & & & & & & & & & & & & & & & & & & & & & & & & & & & else \
& & & & & & & & & & & & & & & & & & & & & & & & & & & & GPIO_ResetBits (GPIOC,GPIO_Pin_3);
& & & & & & & & & & & & & & & & & & & & & & & & & & & &
#define LED2(a) if (a) \
& & & & & & & & & & & & & & & & & & & & & & & & & & & & GPIO_SetBits(GPIOC,GPIO_Pin_4); \
& & & & & & & & & & & & & & & & & & & & & & & & & & & & else \
& & & & & & & & & & & & & & & & & & & & & & & & & & & & GPIO_ResetBits (GPIOC,GPIO_Pin_4);
& & & & & & & & & & & & & & & & & & & & & & & & & & & &
#define LED3(a) if (a) \
& & & & & & & & & & & & & & & & & & & & & & & & & & & & GPIO_SetBits(GPIOC,GPIO_Pin_5); \
& & & & & & & & & & & & & & & & & & & & & & & & & & & & else \
& & & & & & & & & & & & & & & & & & & & & & & & & & & & GPIO_ResetBits (GPIOC,GPIO_Pin_5);
& & & & & & & & & & & & & & & & & & & & & & & & & & & &
#endif
复制代码
复制代码最后把工程上传
(9 MB, 下载次数: 579)
12:28 上传
点击文件名下载附件
下载积分: 下载币 -5
(9 MB, 下载次数: 244)
12:31 上传
点击文件名下载附件
下载积分: 下载币 -5
(6.45 MB, 下载次数: 113)
12:33 上传
点击文件名下载附件
下载积分: 下载币 -5
本来想用网盘,但考虑到我有可能会删除造成麻烦,,还上传到论坛上吧
本文可以直接用做模板,基本不用设置,芯片不同该一下 芯片和 这里就行了
QQ图片13.jpg (115.18 KB, 下载次数: 67)
12:28 上传
我是用mdk472和iar670创建的工程模板,两个软件都可以用,请用相应版本的软件打开,,
固件库版本3.5.0
分享很详细,讲解到位
本帖最后由 晨星 于
12:43 编辑
忘啦,还有两个地方需要该,,,,上图吧,自己看看改成相应的型号
IAR模板里面也是一样,,,多看看,不难
QQ截图57.jpg (48.67 KB, 下载次数: 50)
12:41 上传
QQ截图35.jpg (73.69 KB, 下载次数: 50)
12:41 上传
谢谢楼主的分享,32很强大,赞了
表示很强大,,期待楼主的大作
做的不错,加油吧兄弟
谢谢楼主分享经验,stm32玩好了去试试四轴哈,做成了来发帖,刀币已经备好了
楼主讲的真好啊& && && && &&&
又是一个号教程& &好好学习像楼主看齐
STM32的AD不咋地...................
加油,相信自己!!!!
Copyright &
Powered by谁会PIC16F54单片机延迟程序的c语言编程 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
谁会PIC16F54单片机延迟程序的c语言编程
17:15:23  
我需要编写一个0.85ms的延迟程序和一个0.15ms的延迟程序
19:40:50  
你用的晶振多大呢?
19:40:52  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
精度要求高吗,不高的话开发软件的库函数delay_us(),要求精度高就用中断
19:54:01  
同意楼上所说同意楼上所说
22:12:03  
非常感谢各位高手指点!
22:14:45  
有delay_us()的库函数吗,我在开发软件中怎么没找到?
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司我们用C语言写单片机,可是你真的懂C语言么 - STM32/STM8技术论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
我们用C语言写单片机,可是你真的懂C语言么
助理工程师
15:07:26  
一、static在C语言里面可以用来修饰变量,也可以用来修饰函数。1、 先看用来修饰变量的时候。变量在C语言里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不是堆,不要弄混。例如:在file.c中int main(){int *c = (int *)malloc(sizeof(int));}a是全局变量,b是栈变量,c是堆变量。2、static对全局变量的修饰,可以认为是限制了只能是本文件引用此变量。有的程序是由许多.c文件构成。彼此可以互相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。3、static对栈变量的修饰,可以认为栈变量的生命周期延长到程序执行结束时。一般来说,栈变量的生命周期由OS管理,在退栈的过程中,栈变量的生命也就结束了。但加入static修饰之后,变量已经不再存储在栈中,而是和全局变量一起存储。同时,离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了上一次被调用后留下的值。4、static对函数的修饰与对全局变量的修饰相似,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。例如:文件a.c //只在a文件中用 //在工程里用static void init() //只在a文件中用{}void callme() //在工程中用{}上面的全局变量i和init()函数只能用在a.c文件中,全局变量sum的作用域只在callme()函数里。变量j和函数callme()的作用域扩充到整个工程文件。所以可以在下面的b.c中用extern关键字调用。extern告诉编译器这个变量或者函数在其他文件里已经被定义了。文件b.c //调用a文件里的extern void callme(); //调用a文件里的int main(){...}而且static会有下面的几个特点:1、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;2、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;三、局部变量和全局变量从作用域角度将变量分为局部变量和全局变量。它们采取的存储类别如下:局部变量:①自动变量,即动态局部变量(离开函数,值就消失)。②静态局部变量(离开函数,值仍保留)。③寄存器变量(离开函数,值就消失)。④形式参数可以定义为自动变量或寄存器变量。全局变量:①静态全局变量(只限本程序文件使用)。②全局变量(即非静态的全局变量,允许其它程序文件引用)。从变量存在时间可将变量存储分为动态存储和静态存储。静态存储是在整个程序运行时都存在,而动态存储则是在调用函数时临时分配存储单元。动态存储:①自动变量(函数内有效)。②寄存器变量(函数内有效)。③形式参数。静态存储:①静态局部变量(函数内有效)。②静态全局变量(本程序文件内有效)。③全局变量(整个程序可引用)。从变量存放的位置可将变量存储区分为静态存储区和动态存储区:静态存储区:①静态局部变量。②静态全局变量。③全局变量(可被同一程序其它文件引用)。动态存储区:自动变量和形式参数。CPU寄存器:寄存器变量。当然,本文讨论的对于变量的内存存储分配只是一部分,在C语言中依然会有其他的存储方式和类型的存在。
22:55:48  
楼主还有没有啊
助理工程师
17:06:57  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
楼主还有没有啊
你想要什么,我这边都有啊
22:08:18  
可以可以,谢谢,,
10:46:31  
谢谢,分享
15:59:36  
多谢楼主分享!
工程师职场
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司

我要回帖

更多关于 单片机c语言程序设计 的文章

 

随机推荐