2024年重庆大学通信工程大二课程:《MCU原理及应用——基于恩智浦S12X的嵌入式系统开发》实验课程记录。(错误在所难免,请多斧正!🙏)
目录
- 资源下载和实验环境
- 一、实验目的
- 二、实验内容
- 2.1 PWM脉宽调制输出
- 代码实现
- 硬件显示
- 2.2 SPI(Serial Peripheral Interface)串行通信
- 2.3 2.2改进:加入PC机串行通信
- 总结
资源下载和实验环境
见下前言和注意事项
一、实验目的
掌握C语言综合编程方法,掌握SPI串行通信、PWM(Paulse Width Modulation)等功能部件的使用规则和应用方法,进一步熟悉综合程序设计方法和PC软件工具。
二、实验内容
2.1 PWM脉宽调制输出
PWM4/PWM5输出波形模拟用作D/A,控制通道4的蜂鸣器音量或通道5的LED11灯亮度。
代码实现
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
void PWM_Init(){
PWME=0x00;
PWMCTL=0x00;
PWMPOL=0xFF;
PWMCAE=0x00;
PWMCLK=0xFF;
PWMPRCLK=0x33;
PWMSCLA=50;
PWMPER4=20;
PWMDTY4=10;
}
void main(void) {
/* put your own code here */
//unsigned char i = 0;
//unsigned long j = 50000;
DisableInterrupts;
PWM_Init();
PWME=0x10;
while(1);
//EnableInterrupts;
for(;;) {
_FEED_COP(); /* feeds the dog */
//PWMDTY0 = i;
//PWME = 0x01;
//while(j--);
//j=50000;
//if(i++>=20)i=0;
} /* loop forever */
/* please make sure that you never leave main */
}
硬件显示
实验七 2.1 PWM脉宽调制输出
2.2 SPI(Serial Peripheral Interface)串行通信
SPI0单向,主入从出(Master Input Slave Output. 主机中为输入线,从机中为输出线,作用为单项传输数据 )。
开发板上8位拨位开关S1的状态,将通过74HC165D并入串出芯片的输出Q7,输入到MCU的MISO0,将接收的8位状态送至B口8位LED显示。改变8位拨位开关状态,以观察程序运行情况。
【提示】
对照S12XDEV开发板电路原理图自行查找硬件连接关系;
完成一次SPI读开关状态的步骤:PE3引脚先输出一个负脉冲给74HC165D的并行读数引脚PL(与MCU的PE3引脚相通的),再SPI0发送一个字节以送出时钟脉冲给CP并驱动数据移位,然后才SPI0读一个字节。
2.3 在2.2上改进:加入PC机串行通信
在实验2 的基础上,加入PC机串行通信。SCI0中断方式接收,波特率19200bps。如果接收到PC主机下发的十六进制数88,则将拨位开关的状态发回传给PC机,否则不回传数据。
总结
没时间做了....前面的题目花了很多时间。