fm3之循序渐进.pdf
文本预览下载声明
MB9B506 GPIO
无可否认,对一个CPU 还不了解时我们最希望的是它能动起来。
那么我们就从GPIO 开始吧。虽然晶体的配置,启动等都必须。我们还是先跳过吧。
MB9B506 的GPIO 有以下几个寄存器位来控制,选择是使用哪个功能:
当然还有作为输入输出数据的:PDIR(输入) ,PDOR (输出)。
这里实际上都只是寄存器的一个位,具体的寄存器应该如此:
比如PFR : 实际寄存器FPRX 的一位
PFR 有PFR0 ,对应P0F~P00,PFR1 ,对应P 1F~P 10, PFR8 ,对应P8F~P80,
PFR :GPIO 和设备功能选择。 0 :GPIO , 1 :设备。
PCRX :为上拉配置位为 1 时选择
ADE 模拟输入允许(为1 时选择)
SPSR 配置相关 位USB 或晶体腿脚或不是。为1 时选择。
DDR 输入输出方向设置 0 为输入,1 为输出。
EPFR 扩展 功能选择配置位。这个寄存器每个 对应一个寄存器的多位 (不是一位哦)这
种寄存器高达11 个之多。
下面就以一个小例子作为结束吧。
例子:MB9B500 开机启动后一般默认为GPIO 输入(除了JTAG 和时钟外)。
如果要点亮Led 只要把DDR 设置位1 就可以送数据1 或0 到PDOR 熄灭或点亮LED 了(当
然要连接好电路)。
这个LCDIO 初始化就用到了IO 的配置:
void Init_LCD_IO()
{
/* Release the analog input function*/
ADE =0x03; //不选ADC (估计这个IO 有ADC 功能)
/*Select CPIO function*/
LCD_CS_PFR = ~LCD_CS; //选择GPIO
/*Make pin output*/
LCD_CS_DDR |= LCD_CS;//方向输出
/*Select CPIO function*/
LCD_CD_PFR = ~LCD_CD;
/*Make pin output*/
LCD_CD_DDR |= LCD_CD;
/*Select CPIO function*/
LCD_PS_PFR = ~LCD_PS;
/*Make pin output*/
LCD_PS_DDR |= LCD_PS;
/*Select CPIO function*/
LCD_CLK_PFR = ~LCD_CLK;
/*Make pin output*/
LCD_CLK_DDR |= LCD_CLK;
/*Select CPIO function*/
LCD_DATA_PFR = ~LCD_DATA;
/*Make pin output*/
LCD_DATA_DDR |= LCD_DATA;
}
如何设置系统模式
如图MD1 ,MD0 决定了系统启动
时钟的问题
有哪些时钟:外部主,外部子,内部低,内部高,PLL 产生的5 种吧。
Main clock (CLKMO)
Sub clock (CLKSO)
High-speed CR clock (CLKHC)
Low-speed CR clock (CLKLC)
PLL clock (CLKPLL)
复位
Power-on reset
INITX pin input
External power supply/low-voltage detection reset
Software watchdog reset
Hardware watchdog reset
Clock failure detection reset
Anomalous frequency detection reset
Software reset
TRSTX pin input
MB9B506 之AD 转换初探
3 uni
显示全部