微信扫码下载

编辑推荐

  《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》以STC公司的IAP15W4K58S4单片机和KeilμVision5集成开发环境为平台,全面系统地介绍了C语言程序设计的理论与实践。作者以《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》为核心,构建了由公开视频教学资源、设计案例代码、教学课件、QQ交流群等学生学习资源,以方便广大读者与作者交流互动。
  知识全面:《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》从单片机芯片、数字逻辑、8051CPU内核、助记符指令、C语言基础、C语言应用程序开发等几个方面,全面融合“C语言程序设计”课程和“单片机”课程内容,力求达到学以致用的目的。
  内容优秀:在编写《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》内容时,参考了KeilμVision8051集成开发环境应用手册以及STC公司提供的全新数据手册,以期待将优秀的单片机C语言程序设计内容反映在《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》中。
  实例丰富:通过大量的设计实例,对单片机C语言程序设计的各个知识点进行了详细的讲解。《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》实例达到140个,可以满足教师教学和学生自学的要求。
  软硬融合:在编写《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》的过程中,以软件和硬件协同设计为主线,将流行的C编程语言与STC8051单片机平台进行系统化深度融合,使读者能深入理解并掌握软件和硬件之间内在关系。

内容简介

  《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》介绍了STC单片机集成环境下的C语言程序设计。《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》共分为26章,主要内容包括:STC单片机绪论、数值表示及运算、数字逻辑和时序、STC单片机CPU子系统、STC单片机CPU指令系统、STC单片机集成开发环境、STC单片机汇编语言编程基础、STC单片机C语言编程入门、STC单片机C语言数据类型、STC单片机C语言运算符、STC单片机C语言描述语句、STC单片机C语言数组、STC单片机C语言指针、STC单片机C语言函数、STC单片机C语言预编译指令、STC单片机C语言复杂数据结构、STC单片机C语言高级编程技术、STC单片机时钟、复位和电源模式原理及实现、STC单片机比较器原理及实现、STC单片机计数器和定时器原理及实现、STC单片机串行异步收发器原理及实现、STC单片机ADC原理及实现、STC单片机SPI原理及实现、STC单片机CCP/PCA/PWM原理及实现、STC单片机增强型PWM原理及实现和RTX51操作系统原理及实现。《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》通过全方位多角度的讲解,将C语言程序设计与单片机课程中的各个知识点进行系统化融合。该教材的一大特色就是理论和实际并重,不仅系统介绍C语言程序设计的各个细节以及在单片机的具体应用,并且更加突出学习方法,教给读者系统学习高级程序设计以及微处理器与嵌入式系统的思路和方法。通过对相关知识点的系统介绍,为读者独立学习其他高级语言程序设计以及基于其他处理器架构的嵌入式系统打下坚实的基础。为了方便教师的教学和学生的自学,《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》提供了大量的设计案例和教学视频。《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》可作为高职和本科学生系统学习C语言程序设计以及单片机课程的教材,也可作为STC单片机竞赛、单片机认证考试的参考用书。对于从事单片机应用的工程师以及零基础学习C语言的读者来说,也是很好的参考用书。

精彩书评

  感谢何宾老师撰写了这本新书,保证了中国30多年来的单片机教学与世界同步,保证了中国20多年来的C语言教学与时俱进,《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》是STC大学计划推荐教材,STC高性能单片机、嵌入式C语言教学联合实验室上机实践指导用书,是STC推荐的全国大学生电子设计竞赛STC单片机参考教材,采用《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》作为教材的院校将优先免费获得可仿真的STC15系列单片机实验箱(主控芯片为STC可仿真的IAP15W4K58S4)。
  ——姚永平(STCMCULimited)

目录

第1章STC单片机绪论
1.1单片机基础
1.1.1单片机发展历史
1.1.2单片机概念
1.1.3单片机与嵌入式系统
1.1.4单片机编程语言
1.2STC单片机简介
1.2.1STC单片机发展历史
1.2.2STC单片机IAP和ISP
1.2.3STC单片机命名规则
1.2.4STC单片机封装类型
1.3STC单片机系统硬件设计
1.4STC单片机结构及功能
1.5STC单片机引脚信号
第2章数值表示及转换
2.1常用码制
2.1.1二进制码制
2.1.2十进制码制
2.1.3十六进制码制
2.1.4BCD码
2.2正数表示方法
2.2.1正整数的表示
2.2.2正小数的表示
2.3正数码制转换
2.3.1十进制整数转换成其他进制数
2.3.2十进制小数转换成二进制数
2.4负数表示方法
2.4.1符号幅度表示法
2.4.2补码表示法
2.5负数补码的计算
2.5.1负整数补码的计算
2.5.2负小数补码的计算
2.6定点数表示
2.7浮点数表示
第3章数字逻辑和时序
…….
第4章STC单片机CPU子系统
4.1STC单片机CPU内核功能单元
4.1.1控制器
4.1.2运算器
4.1.3特殊功能寄存器
4.2STC单片机存储器结构和地址空间
4.2.1程序Flash存储器
4.2.2数据Flash存储器
4.2.3内部数据RAM存储器
4.2.4外部数据存储器
4.2.5字节存储顺序
4.3STC单片机中断系统原理及功能
4.3.1中断原理
4.3.2中断系统结构
4.3.3中断优先级处理
4.3.4中断优先级控制寄存器
4.3.5中断向量表
第5章STC单片机CPU指令系统
……
第6章STC单片机集成开发环境
6.1KeilμVision集成开发环境介绍
6.1.1软件功能介绍
6.1.2软件的下载
6.1.3软件的安装
6.1.4导入STC单片机元件库
6.1.5软件的启动
6.2KeilμVision软件开发流程介绍
6.2.1明确软件需求
6.2.2创建设计工程
6.2.3编写汇编/C软件代码
6.2.4汇编器对汇编语言处理
6.2.5C编译器对C语言进行处理
6.2.6库管理器生成库文件
6.2.7链接器生成绝对目标模块文件
6.2.8目标到HEX转换器
6.2.9调试器调试目标代码
6.3KeilμVision软件开发流程实现
6.3.1建立新的设计工程
6.3.2配置文件结构
6.3.3设置工程选项
6.3.4添加新的源文件
6.3.5建立设计
6.3.6硬件平台
6.3.7运行设计
6.3.8启动硬件仿真
6.4U8W编程器
6.4.1U8W编程器接口和功能
6.4.2U8W在线联机下载
6.4.3U8W脱机下载
第7章STC单片机汇编语言编程基础
……
第8章STC单片机C语言编程入门
8.1高级编程语言概念
8.1.1构建计算模型
8.1.2形式化描述
8.1.3算法的流程图描述
8.1.4转换成计算机可以识别的形式
8.1.5代码、程序和编程的关系
8.2选择C语言的理由
8.3C语言发展历史
8.4C语言程序框架
8.5C语言词法构成
第9章STC单片机C语言变量和数据类型
9.1C语言中的常量和变量
9.1.1常量
9.1.2变量
9.2C51编译器支持的数据类型
9.2.1标准C语言所支持的类型
9.2.2volatile类型修饰符
9.2.3单片机扩充的类型
9.3自定义数据类型
9.4变量存储种类和存储类型
9.4.1变量存储种类
9.4.2变量存储器类型
9.5定位变量的绝对位置
第10章STC单片机C语言运算符
……
第11章STC单片机C语言描述语句
11.1输入输出语句
11.1.1putchar函数
11.1.2getchar函数
11.1.3printf函数
11.1.4scanf函数
11.1.5puts函数
11.1.6gets函数
11.2表达式语句
11.3条件语句
11.3.1条件语句格式1
11.3.2条件语句格式2
11.3.3条件语句格式3
11.4开关语句
11.5循环语句
11.5.1while语句
11.5.2dowhile语句
11.5.3for语句
11.5.4goto语句
11.5.5break语句
11.5.6continue语句
11.6返回语句
11.7C语言端口控制实现
第12章STC单片机C语言数组
12.1一维数组的定义和操作
12.1.1一维数组的定义
12.1.2一维数组初始化
12.1.3一维数组的操作
12.2多维数组的定义和操作
12.2.1多维数组的定义
12.2.2多维数组初始化
12.2.3多维数组的操作
第13章STC单片机C语言指针
13.1C51编译器中指针的分类
13.2通用指针
13.2.1未指定存储区域的通用指针
13.2.2指定存储区域的通用指针
13.3指定存储器类型的指针
13.4指针转换
13.5指针变量输入
13.6指向指针的指针
13.7抽象指针
第14章STC单片机C语言函数
14.1函数定义和声明
14.1.1标准C函数定义和声明
14.1.2扩展C函数定义和声明
14.1.3存储器模型
14.2函数调用原理
14.2.1函数调用格式
14.2.2参数和堆栈
14.2.3参数和寄存器
14.2.4返回值
14.3函数调用实现分析
14.4函数变量的存储方式
14.5数组类型传递参数
14.6指针类型传递参数
14.7指向函数的指针
14.8可重入函数设计
14.9中断函数设计
14.9.1C语言中断函数的格式
14.9.2外部中断电路原理
14.9.3C语言中断程序的编写和测试
第15章STC单片机C语言预处理指令
15.1文件包含
15.1.1包含用户头文件
15.1.2包含系统头文件
15.1.3只包含一次文件
15.2宏定义及使用
15.2.1简单的宏定义
15.2.2复杂的宏定义
15.2.3宏操作符
15.2.4预定义的宏
15.3条件编译
15.4其他预处理命令
15.4.1#line
15.4.2#message
15.4.3#error
15.4.4#pragma
第16章STC单片机复杂数据结构
16.1结构
16.1.1结构类型的定义
16.1.2结构变量的定义
16.1.3结构变量内元素的引用
16.1.4指向结构的指针
16.2联合
16.3枚举
16.4链表
16.4.1单链表的存储结构
16.4.2建立链表
16.4.3查找结点
16.4.4删16.4.5插入结点
第17章STC单片机C语言高级编程技术
17.1C程序中使用汇编语言
17.1.1内嵌汇编语言
17.1.2调用汇编程序
17.2优化代码策略
17.3C语言动态图形交互设计
17.3.1动态图形交互硬件平台
17.3.2STC单片机对触摸屏的控制
17.3.3STC单片机对触摸屏的初始化
17.3.4触摸屏基本绘图流程
17.3.5绘制不同图形的具体实现方法
17.3.6设计头文件说明
17.3.7主处理文件main函数设计
第18章STC单片机时钟、复位和电源模式原理及实现
18.1STC单片机时钟
18.2STC单片机复位
18.2.1外部RST引脚复位
18.2.2软件复位
18.2.3掉电/上电复位
18.2.4MAX810专用复位电路复位
18.2.5内部低压检测复位
18.2.6看门狗复位
18.2.7程序地址非法复位
18.3STC单片机电源模式
18.3.1低速模式
18.3.2空闲模式
18.3.3掉电模式
第19章STC单片机比较器原理及实现
19.1STC单片机比较器结构
19.2STC单片机比较器寄存器组
19.2.1比较控制寄存器1
19.2.2比较控制寄存器2
19.3STC单片机比较器应用
第20章STC单片机计数器和定时器原理及实现
20.1计数器/定时器模块简介
20.2计数器/定时器寄存器组
20.2.1定时器/计数器0/1控制寄存器TCON
20.2.2定时器/计数器工作模式寄存器TMOD
20.2.3辅助寄存器AUXR
20.2.4T0~T2时钟输出寄存器和外部中断允许INT_CLKO(AUXR2)
20.2.5定时器T0和T1中断允许控制寄存器IE
20.2.6定时器T0和T1中断优先级控制寄存器IP
20.2.7定时器T4和定时器T3控制寄存器T4T3M
20.2.8定时器T2、T3和T4的中断控制寄存器IE2
20.3计数器/定时器工作模式原理和实现
20.3.1定时器/计数器0工作模式
20.3.2定时器/计数器1工作模式
20.3.3定时器/计数器2工作模式
20.3.4定时器/计数器3工作模式
20.3.5定时器/计数器4工作模式
第21章STC单片机串行异步收发器原理及实现
21.1RS232标准简介
21.1.1RS232传输特点
21.1.2RS232数据传输格式
21.1.3RS232电气标准
21.1.4RS232参数设置
21.1.5RS232连接器
21.2STC单片机串口模块简介
21.2.1串口模块结构
21.2.2串口引脚
21.3串口1寄存器及工作模式
21.3.1串口1寄存器组
21.3.2串口1工作模式
21.3.3串口1通信实例1
21.3.4串口1通信实例2
21.4串口2寄存器及工作模式
21.4.1串口2寄存器组
21.4.2串口2工作模式
21.5串口3寄存器及工作模式
21.5.1串口3寄存器组
21.5.2串口3工作模式
21.6串口4寄存器及工作模式
21.6.1串口4寄存器组
21.6.2串口4工作模式
21.7串行通信综合实现
21.7.1红外收发器的电路原理
21.7.2红外通信波形捕获
21.7.3红外通信协议
21.7.4红外检测原理
21.7.5串口通信原理
21.7.6设计实现
第22章STC单片机ADC原理及实现
22.1模数转换器原理
22.1.1模数转换器的参数
22.1.2模数转换器的类型
22.2STC单片机内ADC的结构原理
22.2.1STC单片机内ADC的结构
22.2.2ADC转换结果的计算方法
22.3STC单片机内ADC寄存器组
22.3.1P1口模拟功能控制寄存器
22.3.2ADC控制寄存器
22.3.3时钟分频寄存器
22.3.4ADC结果高位寄存器
22.3.5ADC结果低位寄存器
22.3.6中断使能寄存器
22.3.7中断优先级寄存器
22.4ADC应用实现1
22.4.1直流分压电路原理
22.4.2软件设计流程
22.4.3具体实现过程
22.5ADC应用实现2
22.5.1硬件电路设计
22.5.21602字符LCD原理
22.5.3软件设计流程
22.5.4具体实现过程
22.6ADC应用实现3
22.6.1硬件电路设计
22.6.212864图形点阵LCD原理
22.6.3软件设计流程
22.6.4ADC外部输入信号要求
22.6.5具体实现过程
22.7ADC应用实现4
第23章STC单片机SPI原理及实现
23.1STCSPI模块结构及功能
23.1.1SPI传输特点
23.1.2SPI模块功能
23.1.3SPI接口信号
23.1.4SPI接口的数据通信方式
23.1.5SPI模块内部结构
23.2SPI模块寄存器组
23.2.1SPI控制寄存器
23.2.2SPI状态寄存器
23.2.3SPI数据寄存器
23.2.4中断允许寄存器2
23.2.5中断优先级寄存器
23.2.6控制SPI引脚位置寄存器
23.3SPI模块配置及时序
23.3.1SPI配置模式
23.3.2主/从模式的注意事项
23.3.3通过SS修改模式
23.3.4写冲突
23.3.5数据模式时序
23.4SPI模块设计实例
23.4.1系统控制电路原理
23.4.27段数码管原理
23.4.374HCT595原理
23.4.4系统软件控制流程
23.4.5程序具体实现
第24章STC单片机CCP/PCA/PWM模块原理及实现
24.1CCP/PCA/PWM结构
24.2CCP/PCA/PWM寄存器组
24.2.1PCA工作模式寄存器
24.2.2PCA控制寄存器
24.2.3PCA比较捕获寄存器
24.2.4PCA的16位计数器
24.2.5PCA捕获/比较寄存器
24.2.6PCA模块PWM寄存器
24.2.7PCA模块引脚切换寄存器
24.3CCP/PCA/PWM工作模式
24.3.1捕获模式
24.3.216位软件定时器模式
24.3.3高速脉冲输出模式
24.3.4脉冲宽度调制模式
第25章STC单片机增强型PWM发生器原理及实现
25.1增强型PWM发生器简介
25.2增强型PWM发生器相关寄存器组
25.2.1端口配置寄存器
25.2.2PWM配置寄存器
25.2.3PWM控制寄存器
25.2.4PWM中断标志寄存器
25.2.5PWM外部异常控制寄存器
25.2.6PWM计数器
25.2.7PWM时钟选择寄存器
25.2.8PWM2翻转计数器
25.2.9PWM2控制寄存器
25.2.10PWM3翻转计数器
25.2.11PWM3控制寄存器
25.2.12PWM4翻转计数器
25.2.13PWM4控制寄存器
25.2.14PWM5翻转计数器
25.2.15PWM5控制寄存器
25.2.16PWM6翻转计数器
25.2.17PWM6控制寄存器
25.2.18PWM7翻转计数器
25.2.19PWM7控制寄存器
25.2.20PWM中断优先级控制寄存器
25.3增强型PWM发生器实现1
25.4增强型PWM发生器实现2
第26章RTX51操作系统原理及实现
26.1操作系统的必要性
26.1.1单任务程序
26.1.2轮询程序
26.2操作系统基本知识
26.2.1操作系统的作用
26.2.2操作系统的功能
26.3RTX51操作系统的任务
26.3.1定义任务
26.3.2管理任务
26.3.3切换任务
26.4RTX51操作系统内核函数
26.5RTX51操作系统实现
26.5.1RTX51操作系统实现1
26.5.2RTX51操作系统实现2
26.5.3RTX51操作系统实现3
附录ASTC单片机选型表625
附录BSTC四轴飞行器631
附录CGNTSMK2开发板原理图633

前言/序言

  目前,在国内高校电子信息类专业同时开设有C语言程序设计课程和单片机课程,而大多数学生在学习C语言程序设计时,没有数字逻辑和处理器的最基本知识,根本不清楚学习C语言程序设计课程的方法和目的,因此造成学生在学习该课程时,普遍感觉很抽象难理解,降低了学生学习该课程的兴趣和效率。学生在学习后续所开设的单片机课程时,授课教师又局限于传统的教学模式和教学方法,往往花了很大的精力只介绍使用汇编语言编程8051单片机,而对C语言在单片机程序设计中的应用讲得很少,甚至根本没有任何涉及,结果就是这些专业虽然在教学计划中开设了这两门课程,但是学生都没有学明白,根本达不到开设相关课程的目的。众所周知,在嵌入式系统开发中,C语言是最重要的开发工具,如果学生在学习C语言的时候没有打好基础,将使得他们无法胜任嵌入式系统开发的工作。
  作为国内知名的专业从事8051单片机设计的公司——宏晶科技不断开拓创新,在IntelMCS51单片机的基础上,融入大量最新的半导体设计方法和计算机技术,使得STC8051单片机的性能比传统的MCS51单片机提高了十几倍,并且朝着片上系统SoC的方向发展。此外,借助于KeilμVision集成开发环境,通过使用C语言在STC单片机平台上完成高效率的系统开发。
  学生在STC8051单片机平台上系统学习C语言程序设计的优势,主要体现在以下几个方面。
  (1)在目前已知的嵌入式处理器架构中,8051处理器的内核是最简单的,因此对于学生学习来说,是比较容易入门的。由于处理器的内核相对简单,因此学生可以比较系统直观地学习处理器的内部结构,比如知道程序计数器的作用,取指、译码和执行指令的过程和存储器结构等。
  (2)在学习完8051CPU内核和指令系统的基础上,学生已经具备了处理器的知识,这样就有了学习C语言的一个具体的处理器平台,因此学习C语言就有了很强的针对性。同时,KeilμVision提供的C51编译器除了支持绝大部分的C语言标准(不支持文件操作)外,还针对8051的架构对C语言标准进行了扩展,学生在学习完C语言程序设计的基本知识后,就能马上应用C语言在STC增强型8051单片机平台上开发应用程序,更深入地理解以C语言为代表的软件控制CPU以及外设的工作过程。
  (3)8051单片机从面世到现在已经三十多年了,在这三十多年的发展历程中,工业界和教育界一起帮助8051平台构建了功能丰富的生态系统,包括大量的教学视频、设计案例和与目前热点应用相关的应用案例,这些将极大地普及和扩展8051在嵌入式系统中的应用领域。
  (4)更重要的是,经过这样系统有针对性的学习后,当学生接触到其他高级程序语言和不同的嵌入式处理器架构时,就知道如何入手快速地面对嵌入式系统的开发。
  (5)将C语言程序设计课程和单片机课程合并不但减轻了学生的学习负担,而且能为国家培养大量可以从事嵌入式系统开发的人才,提高国内嵌入式系统的整体开发水平,从中国制造转变为中国智造。
  编写《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》时,作者力图从不同的视角对C语言进行解读,从而使读者不但能知道C语言的语法,而且能活学活用,同时使读者能更好地理解C语言和单片机乃至嵌入式系统之间的内在联系。
  根据作者多年的教学和科研经历,学习嵌入式系统有着一条非常清晰的主线,即半导体、开关电路、组合逻辑和时序逻辑、状态机、中央处理单元和接口、以助记符所表示机器指令的解读,以C语言为代表的高级语言程序设计。在这个基础上,读者可以自学驱动程序设计以及针对不同操作系统的应用程序开发。因此,书中按照这条主线对相关知识点进行了详细的介绍。
  C语言不是孤立存在的,它最终是要被转换成可以运行在不同处理器架构上的机器代码。因此,在《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》介绍每个C语言语法知识点的时候,并不只是单单追求能得到正确的运行结果,而是更深入地通过KeilμVision集成开发环境提供的调试器,在机器语言助记符层面,即我们通常所说的汇编语言层面上,通过存储器窗口、监视窗口和寄存器窗口等多角度全方位地解读C语言的每个语法知识点,使得读者能知其然,并且能知其所以然,真正达到活学活用的目的,而不是背C语言的语法和规则。
  C语言程序设计能否学透,不仅取决于教师的教学水平,更主要的是取决于学生能不能真正地在实践中学习。将C语言程序设计的理论知识和应用实践完美结合是《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》的一大特色。
  《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》从开始编写到完稿历时近半年,《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》共分为26章,以STC公司最新推出的IAP15W4K58S4单片机为平台,以Keil最新的μVision5为软件开发平台,亲自设计C语言程序案例多达130多个,这些设计例子均通过硬件和软件进行了验证和测试。
  为了方便老师的教学和学生的自学,提供了该教材的教学课件和所有设计实例的完整设计文件,以及公开视频教学资源。
  在《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》的编写过程中参考了STC公司最新的技术文档和手册,以及STC学习板原理图和PCB图,在此向STC公司表示衷心的感谢。在《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》编写的过程中,作者的学生汤宗美、张艳辉、李宏宇、李宝隆负责部分章节的编写工作,汤宗美对《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》的全部稿件进行了初步的完善和修改。在《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》编写的过程中,得到了STC公司员工在技术和市场服务方面的热心帮助,特别是得到了STC公司老总姚永平先生的支持,他对作者在编写《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》过程中遇到的各种问题进行了耐心细致的回答。在《STC单片机C语言程序设计(立体化教程)/高等学校电子信息类专业系列教材》出版的过程中,也得到了清华大学出版社各位编辑的帮助和指导,在此也表示深深的谢意。
  由于编者水平有限,编写时间仓促,书中难免有疏漏之处,敬请读者批评指正。
  何宾
  2016年1月于北京

其他推荐