历史上的今天
今天是:2025年01月28日(星期二)
2020年01月28日 | 我的低功耗MSP430学习生涯
2020-01-28 来源:eefocus
从今天开始学习利用MSP430FR2433这款芯片实现测量不同阻抗的天线并实现匹配。
这是我第一次用MCU,用的不好,请多多指教,中途有错,请纠正。
(1)硬件部分功能实现
MCU

下面是天线匹配

最后一个模块是电阻桥

(2)代码部分
这里我刚刚开始学,下面是主程序,我将以看懂程序来记录我的学习过程。
void main(void)
{
// Initialize MCU
init_watchdog(); //初始化看门狗
init_clocks();
init_gpios();
// Initialize peripherals
init_rocky100();
init_rmeter();
// Release MCU gpios
release_gpios();
__bis_SR_register(GIE);
// Load configuration
// Configure sensor
init_systimer();
fSysTick = true;
while (1)
{
if (fSysTick == true)
{
// Reset timer flag
fSysTick = false;
if (SysTickCounter++ >= r100DemoConf.nSysTicksPerSample)
{
SysTickCounter = 0;
rocky100_update_data(meas_rmeter());
}
}
if (fR100 == true)
{
// Reset timer flag
fR100 = false;
// Check rx_buffer
// Reset SPI
reset_rocky100_spi();
}
if (rocky100_is_idle())
{
mcu_lpm_enter(4);
}else{
mcu_lpm_enter(0);
}
}
看门狗的初始化程序比较简单,WDTPW=0X5A00,这是默认值,WDTHOLD=0X0080,这样可以使低八位的最高位置1,这部分可以查手册,在看门狗寄存器有介绍。
void init_watchdog()
{
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer,WDTHOLD=1b,WDTPW set fault。
}
现在要理解这个时钟初始化程序,
void init_clocks()
{
// Configure one FRAM waitstate as required by the device datasheet for MCLK
// operation beyond 8MHz before configuring the clock system.
FRCTL0 = FRCTLPW | NWAITS_1; //使能FRCTL寄存器,等待模式1
__bis_SR_register(SCG0); // disable FLL
这个代码让我知道了bis与bic的区别,,下面可以查CSC寄存器得到每一句话的意思。
CSCTL3 |= SELREF__REFOCLK; // Set REFO as FLL reference source,P116
CSCTL0 = 0; // clear DCO and MOD registers
CSCTL1 &= ~(DCORSEL_7); // Clear DCO frequency select bits first,即使是取反了,运算时先取反,然后与
CSCTL1 |= DCORSEL_5; // Set DCO = 16MHz
CSCTL2 = FLLD_0 + 487; // DCOCLKDIV = 16MHz ,000b = fDCOCLK ÷ 1,487=0X01E7=0000 0001 1110 0111
__delay_cycles(3); //这里延时了多久,我在猜测这里是不是延时3s ,
//__bic_SR_register(SCG0); // enable FLL
// Disable waiting FLL lock, as it takes about 300ms in active mode.
// Just go to sleep and work with unlocked clock during first operations.
//while(CSCTL7 & (FLLUNLOCK0 | FLLUNLOCK1)); // FLL locked
CSCTL4 = SELMS__DCOCLKDIV; // set default REFO(~32768Hz) as ACLK source, ACLK = 32768Hz
// default DCOCLKDIV as MCLK and SMCLK source
}
上一篇:MSP430简单程序设计
史海拾趣
|
小弟在学习画板的时候设计了一块STC5410AD的小学习板,可是后来老师要把这块板做出来,厂商做出来后测试的时候出现了一个问题,一直没解决。 通常51都用MAX232U转串下载,可我的下载芯片用的是CH341T,因为看到它有转U口 ...… 查看全部问答> |
|
S3C2440 Wince5.0 ActiveSync无法同步 使用同一个Eboot,开发板上下ce4.2的nk可以同步,说明硬件没问题 ce5.0如下配置 PB添加了以下组件 end user ActiveSync shell Network end user RAS/PPP TAPI2.0 Unimodem USB Fuction Seriel USB Fuction Controller 驱动使用三星原 ...… 查看全部问答> |
|
extern \"C\" __declspec(dllimport) BOOL KernelIoControl( DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned ); #define IOCTL_HAL_G ...… 查看全部问答> |
|
如果头文件中有个结构体: struct FvFixed { CString m_str; public: friend FvFixed const operator+(const FvFixed x, const FvFixed y); ...… 查看全部问答> |
|
最近要开发一个文件驱动程序,我有一点驱动程序开发经验(虽然不多,但也算入门),我想先阅读一个短小的程序(最好有注释),掌握精髓后在逐渐阅读难点的程序(本人认为IFS DDK的代码对于入门来说还是有点难),请大家给提供一下信息,哪里有简单的文件驱动的 ...… 查看全部问答> |
|
请问 Platform Builder 4.2 如何定制英文版wince4.2 ? 请问 Platform Builder 4.2 如何定制英文版wince4.2 ? 我在定制时 把有关语言选项都关闭结果定制的wince4.2还是中文界面 … 查看全部问答> |
|
咨询下STM32 GOIO管脚双向传输问题! 现采用管脚PD0-7 数据需要双向传输,即能接收数据,也能对外发送数据,那么是不是每次都必须设置方向?? 比如接受数据时,要先设置管脚为输入.. 发送数据时,又药重新设置管脚为输出.. ...… 查看全部问答> |




