完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
本帖最后由 lcmbeyond04 于 2013-11-5 22:12 编辑
点亮LED其实是很简单的一些程序,当你看到其他人的程序的时候,你有思考过怎样改得更好吗?有思考过怎样更方便于增加多种变化吗?如果单纯的led_on;delay(); led_off; 就能满足你的要求,这样真的要好好反省一下自己,作为初学者,不懂并不可怕,但不思考,那是致命的。你看到程序的时候,你有想过怎样改得更方便吗?你有想过怎样写得更好吗? 我的程序也是看着网上其他的教程,然后进行了加工,站着巨人的肩膀上学习,进步才会更快,当然收入就..呵呵 这些程序除了给大家学习学习,还希望大家能指出一些缺点,让我知道一下自己的不足。附近的PDF是教大家怎样建立一个STM32工程,也是我程序参考的。输出的HEX在文件夹output-obj里面。 授之以鱼不如授之以鱼,留几个问题给大家思考: 1,GPIO的开漏输出和推挽输出有什么区别?大致结构是如何的?下面是部分程序,能不能改成推挽输出? void led_init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能GPIO时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; //使能LED对应的GPIO GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //开漏输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); } 2,关于建立工程,默认是72MHz,这是因为外部晶振是因为8MHz的,如果换成是12MHz的,发生什么问题?或者说我要把72MHz改成36MHz的系统频率,怎么改?(高频率不用用低的,这个问题比较脑残) 3,在main.h(如下)中,能不能把变量和数组都剪切去led.h?尝试一下,收获匪浅哦 #ifndef _main_h_ #define _main_h_ uint8_t kindOfLed; uint8_t ledState_a[KIND_OF_LED]={led0,led0,led1,led12,led123,led23, led3,led0,led0,led0,led0,led3,led23, led123,led12,led1,led0,led0,0xff}; #endif 4,初始化我用了库函数,为什么主程序却去操作寄存器?(明白这个,面试跟面试官这样说出理由,他会觉得你真的懂stm32了哦^ ^) 5,main.h能不能包含在myheader.h中?(myheader.h包含了各种xx.c的头文件) 其实这些都是我初学stm32遇到的问题(其实就是前几天),因为我有学过cortex-M3的其他单片机,而且是从寄存器学起的,所以有一定基础。 作为初学者,一定要多思考。其实上面的问题有个别我只是解决了而已,只能是靠一些现象分析猜测,毕竟资历尚浅。 |
|
相关推荐
17 个讨论
|
|
|
|
|
|
|
|
|
|
|
|
谢谢分享,很不错
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 19:53 , Processed in 1.056702 second(s), Total 88, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
6568