C语言
岙野小白菜
时刻提醒:多思考!!
展开
-
区别编译环境是C or C++
C++是C的超集一个典型C程序(后缀名.c)可以完全被视为C++程序来编译C程序可以通过__cplusplus符号是否预定义来判断当前是gcc还是g++编译__cplusplus的值是long int类型的,值表示当前编译程序的C++编译器的版本号。#include <cstdio>#ifdef __cplusplus#define USECPP 1#else#define USECPP 0#endif一个典型C++程序(后缀名.cpp)只能当C++程序来编译,可见C++是原创 2020-07-13 13:55:47 · 241 阅读 · 0 评论 -
STM32常见应用解析(2)
使用USART操作SPI设备为什么需要USART产生SPI信号片上SPI接口不够用需要特殊的数据格式:9位/字节或需要带奇偶检验的数据字节(7位数据+奇偶位)/字节(8位数据+奇偶位)/字节SPI接口有以下属性四条信号线:MISO & MOSI & SCK (&NSS)时钟相位和极性 CPOL & CPHA数据帧格式:MSB / LSBUSART接口以及时序要求RX & TX & SCLK时钟相位和极性 CPOL原创 2020-07-09 12:34:40 · 318 阅读 · 0 评论 -
STM32常见应用解析(1)
实现软件的短时间延迟利用 Cortex-M3 内核包含的 SysTick 时钟代替 Delay(N) ,实现延时N毫秒的精确值。SysTick 为一个24位递减计数器,SysTick 设定初值并使能后, 每经过1个系统时钟周期,计数值就减1。计数到0时,SysTick计数器自动重装初值并继续计数,同时内部的 COUNTFLAG 标志会置位,触发中断(如果中断使能)。在 STM32 的应用中,使用 Cortex-M3 内核的 SysTick 作为定时时钟,设定每一毫秒产生一次中断,在中断处理函数里对N减原创 2020-07-09 11:30:46 · 1322 阅读 · 0 评论 -
STM32F103库学习
外设库价值外设库即以前芯片公司提供的示例代码的标准化产物外设库简化了我们开发产品的工作量外设库以源码方式提供,且可以用作学习素材学习和使用重点规范化编程的意识和能力C语言要求对框架和层次认识掌握没有外设库时直接C语言操作寄存器的方式(看原理图、查数据手册、位操作等) 外设库只是帮助我们**简化编程**,简化的主要是劳动量 外设库一定程度上**降低编程难度**,但是只会库、离了库就不会编程、库函数调用出了问题就束手无策这种还是没戏。 ...原创 2020-07-06 20:03:52 · 1291 阅读 · 0 评论 -
STM32F103 72MHz时钟设置
将系统时钟初始化到72MHz的函数根据数据手册和库函数,设置STM32时钟为72MHz这是.c文件#include "clock.h"void Set_SysClockTo72M(void){ unsigned int faultTime = 0; unsigned int rccCrHserdy = 0; unsigned int rccCrPLLrdy = 0; rRCC_CR = RCC_CR_RESET; rRCC_CR &= ~(1<<16);原创 2020-07-06 00:34:28 · 5223 阅读 · 2 评论 -
STM32F103C8T6 - 控制LED点亮熄灭
硬件连线PB8 - PB15 → LED1 - LED8寄存器地址确认C语言操作寄存器(指针)ARM是内存与IO统一编址,所以ARM中的所有外设都是通过寄存器的方式操作每个寄存器都有地址,C语言通过地址来操作寄存器位(位操作和指针)C指针常用技巧代码实现在这里插入代码片...原创 2020-07-05 16:09:25 · 2792 阅读 · 0 评论 -
C语言常见面试题(1)
用C语言向内存地址0x30000004写入16*(unsigned int *)0x30000004 = 16;或者unsigned int *p = (unsigned int *)0x30000004;*p = 16;原创 2020-07-05 00:43:37 · 210 阅读 · 0 评论