历史上的今天
今天是:2025年02月22日(星期六)
2020年02月22日 | 蓝桥杯嵌入式STM32学习笔记(一)——MDK下C语言基础复习
2020-02-22 来源:eefocus
MDK下C语言基础复习
写在前面:就在前几天我刚刚参加完了蓝桥杯的省赛,在比赛之前我阅读了社区里许多优秀博主的文章,所以也想把自己的收获当作笔记记下,希望能够帮助后面也要参赛的同学,顺便也总结一下自己这段时间的收获。
这一部分是MDK中有关C语言的部分,如果大家C语言都学得很好就忽略,主要是讲一些基本操作。
1.1位操作
在MDK下常用的位操作符和微操作技巧
C语言支持如下6钟位操作

其中这里与、或、异或和取反不用我多讲我在这里讲一下移位运算。
移位运算包括左移和右移
左移运算:x< 例子: 假设u8 A=0000 0001 A<<1=0000 0010 位操作技巧 1)不改变其他位的值的状况下,对某几位进行设值。 方法:先对需要设置的位用&操作符进行清零操作,然后用|操作符设置值。 GPIOA->CRL&=0XFFFFFF0F; //将第4-7位清0 然后再与需要设置的值进行|或运算 GPIOA->CRL|=0X00000040; //设置相应位的值 2)移位操作提高代码的可读性 可以利用移位操作让代码更直观 GPIOA->ODR|=1<<5; //PA.5输出高,不改变其他位 这样我们一目了然,5告诉我们是第5位也就是第6个端口,1告诉我们是设置为1了。 常见问题总结 Q1:0x20代表什么? A1:0x是整型常量的表示方式。以0x开头的整型常量,代表后续字符为16进制的表达。于是0x20代表十六进制的20,也就是10进制的32. Q2:&=、|=是什么意思 A2:按位与后赋值和按位或后赋值 扩展资料: https://zhidao.baidu.com/question/1576758038983362220.html 内含几个例子和解释 1.2 define 宏定义 格式 #define 标识符 字符串 1.3 ifdef 条件编译 单片机程序开发过程中,经常会遇到一种情况,当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序度2 #endif 它的作用是: 当标识符已经被定义过(一般是用#define命令定义), 则会对程序段1进行编译, 否则编译程序段2。 其中#else部分也可以没有, 这个条件编译在MDK里面是用的很多的。 其实这个语句是专门用在写.h文件上的,大家记住就可以了 #ifndef __ADC_H #define __ADC_H /* Includes ------------------------------------------------------------------*/ #include "stm32f10x.h" void ADC1_Init(void); u16 ADC_Read(void); #endif 这个是我写的ADC的.h文件,之后的.h文件也都是这么写就可以了 在程序段中写函数声明就行了 1.4 extern变量声明 C语言中extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 当我们编程时候经常会在main.c中声明变量,而在.h文件中对这个变量进行重新的赋值或者操作,我们就需要在.h文件中声明这个变量在其他地方定义过了,就是运用我们的extern。大家可能这里不是很理解extern是怎么用的,不用担心我们到了之后就自然会了,这里有个印象就好
史海拾趣
|
孩子学走路了,想做个防丢器玩,问了不少IC供应商都不理我:\'( ,电子市场有没有这种IC卖的?是不是一定要开发产品才肯提供的?这种IC应该是很成熟的东西来的,我却买不到,郁闷… 查看全部问答> |
|
U盘-MP3设计方案 匡伟 功能:能够实现从U盘中读取数据,然后用耳机或者音响设备播放音频文件。 1、电子产品的设计文件 1.1、概述 我们设计的是U盘-MP3播放器,电源采用外部9V电源供电,它只是一个播放设备,内不带FLASH及存储芯片, ...… 查看全部问答> |
|
把短点数C1C90000H转换成为十进制 (1) 将十六进制代码写成二进制,并奋力出符号位,阶码和尾数 因为; C1C90000H=11000001110010010000000000000000 &nb ...… 查看全部问答> |
|
#include \"stm32f10x_lib.h\"//#include \"platform_config.h\"#define USART1_DR_Base 0x40013804#define Sendbuff_size 35vu8 TxBuffer[]= \"111111111111111111111\";vu8 RxBuffer[];/* Private typedef -------------------- ...… 查看全部问答> |
|
unsigned char CS_EN,DI_EN ;void delay(int i){ while(i>0) { i--; }}unsigned char Write_Cmd(unsigned char *cmd,unsigned char lres){ unsigned ...… 查看全部问答> |
|
我现在看到很多需要快速处理的应用中,好像用DSP的比较多,那如果用FPGA做图像处理?它有哪些特点或者是优势呢?还有就是它的技术难点在哪里?有做过的人可以进来谈谈自己的见解,我现在正面临选择方向的问题?自己对FPGA比 ...… 查看全部问答> |
|
详细讨论warnning:entry point symbol _c_int00 undefined以及entry point 的意义 打算细致的讨论一下warnning:entry point symbol _c_int00 undefined 虽然之前有很多人谈过,但大多说得不够详细。 分三点讨论。 [ 本帖最后由 hlx3012 于 2012-3-24 14:40 编辑 ]… 查看全部问答> |




