发新帖本帖赏金 5.00元(功能说明)我要提问
返回列表
打印

【MSP430i2xx教程第二讲】时钟系统 & EUSCI_A_UART

[复制链接]
楼主: xlhtracy
手机看帖
扫描二维码
随时随地手机跟帖
261
波板糖| | 2015-4-21 11:23 | 只看该作者 回帖奖励 |倒序浏览
feiting94 发表于 2015-4-1 17:14
将printf函数移植到UART程序中,很好用的
#if 1
#pragma import(__use_no_semihosting)                    ...

看着很好,能不能把每一行代码神恶魔意思,解释一下。新手看不懂...

使用特权

评论回复
262
feiting94| | 2015-4-21 12:53 | 只看该作者
波板糖 发表于 2015-4-21 11:23
看着很好,能不能把每一行代码神恶魔意思,解释一下。新手看不懂...

//加入以下代码,支持printf函数,而不需要选择use MicroLIB(微库,和标准库区分开)          
#if 1
#pragma import(__use_no_semihosting)            
//标准库需要的支持函数                 
struct __FILE
{
        int handle;
};

FILE __stdout;      
//定义_sys_exit()以避免使用半主机模式   
_sys_exit(int x)
{
        x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{        
        while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
        USART1->DR = (u8) ch;      
        return ch;
}
#endif

这种方法叫printf函数的重定向
半主机模式就是需借助仿真器连接电脑,我们要做的是去掉仿真器,使开发板独立运行,把printf函数的结果输出到单片机的外设,这里就是串口,其实也可以是LCD,SD卡等
而标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数.具体半主机的定义你可以查一查,简单来讲,半主机模式就是通过仿真器实现开发板在电脑上的输入和输出。如果要避免半主机模式
重定向是指将fputc函数重新定义,这里就是串口发送函数,因为fputc是标准库函数,你要使用串口收发,必须将它改为串口的待发送数据

使用特权

评论回复
263
波板糖| | 2015-4-21 13:11 | 只看该作者
谢谢,懂了7分:handshake

使用特权

评论回复
264
波板糖| | 2015-4-21 13:30 | 只看该作者
songchenping 发表于 2015-4-4 21:05
有关系的。我们产品中一概用的都是金属膜的电阻。碳膜的稳定性较差。尤其是在工业环境中。即使金属膜中我 ...

遇见大牛了

使用特权

评论回复
265
波板糖| | 2015-4-21 13:37 | 只看该作者
月下飞鸿 发表于 2015-4-4 22:10
闲着没事,就把课后题给写了一下,根据提供的例程改写。用的是STC单片机串口接收思维,贴出来请各位大神指 ...

  EUSCI_A_UART_init(EUSCI_A0_BASE, &uartConfig);中EUSCI_A0_BASE是什么意思

使用特权

评论回复
266
波板糖| | 2015-4-21 13:38 | 只看该作者
月下飞鸿 发表于 2015-4-4 22:10
闲着没事,就把课后题给写了一下,根据提供的例程改写。用的是STC单片机串口接收思维,贴出来请各位大神指 ...

EUSCI_A_UART_init(EUSCI_A0_BASE, &uartConfig); 中EUSCI_A0_BASE是什么意思

使用特权

评论回复
267
波板糖| | 2015-4-21 13:59 | 只看该作者
uestc_zyd 发表于 2015-4-7 09:01
我自己找了一些资料,共享给大家,希望能有些帮助。

:handshake

使用特权

评论回复
268
月下飞鸿| | 2015-4-21 16:27 | 只看该作者
波板糖 发表于 2015-4-21 13:38
EUSCI_A_UART_init(EUSCI_A0_BASE, &uartConfig); 中EUSCI_A0_BASE是什么意思

从这个函数来的bool EUSCI_A_UART_init ( uint16_t baseAddress,EUSCI_A_UART_initParam *param )

EUSCI_A0_BASE就是其中的 uint16_t baseAddress,也就是选择的是哪个串口

使用特权

评论回复
269
uestc_zyd| | 2015-4-22 12:25 | 只看该作者

使用特权

评论回复
270
yzwb1986| | 2015-4-24 13:57 | 只看该作者
我已经晕了。

使用特权

评论回复
271
rbcat| | 2015-4-28 17:46 | 只看该作者
xlhtracy 发表于 2015-4-1 10:40
第三章  时钟系统(CS)
3.1  本章引言
  时钟系统(Clock System)模块支持低成本和低功耗。通过使用4个内 ...

不知lz看过5x/6x系列的driver没有,关于UCS多了一个函数  UCS_setExternalClockSource
void UCS_setExternalClockSource ( uint32_t XT1CLK frequency, uint32_t  XT2CLK frequency )

但是,后面这段文字让我有点困惑。getmclk这几个函数获取时钟频率,是通过430检测实际的硬件信号,还是只是根据用户输入的参数把计算结果反馈的?如果是后者,没有什么实际意义啊,UCS_setExternalClockSource这个函数都已经写的很清楚了。
UCS_setExternalClockSource must be called if an external crystal XT1 or XT2 is used and the  user intends to call UCS getMCLK, UCS getSMCLK or UCS getACLK APIs. If not, it is not   necessary to invoke this API.

使用特权

评论回复
272
爱上花木兰| | 2015-5-9 08:58 | 只看该作者

使用特权

评论回复
273
HORSE7812| | 2015-5-9 16:29 | 只看该作者
mark

使用特权

评论回复
274
bumblebee在电设| | 2016-3-7 20:10 | 只看该作者
hanzhenfei 发表于 2015-4-2 17:45
楼上说的没错,这种写法肯定编译不过去。只不过作者这样写就只是判断一下,意思一下而已。明白就行了。 ...

不明白啊!为啥不能直接用判断语句呢?

使用特权

评论回复
275
玛尼玛尼哄| | 2020-10-15 11:28 | 只看该作者
相当于中文手册啊,不错不错。

使用特权

评论回复
发新帖 本帖赏金 5.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则