PSoC3 FirstTouch Starter Kit 之简单串口通信
英飞凌
3904 人阅读
|
2 人回复
|
2012-10-13
TA的每日心情 | 奋斗 2018-8-29 20:40 |
|---|
签到天数: 1341 天 连续签到: 1 天 [LV.10]以坛为家III
状元
- 积分
- 9659
        
|
本帖最后由 wangku001wei 于 2012-10-13 01:11 编辑
尝试了下Com串口
PSoC3的串口中 TX RX 引脚可以自由分配
首先看原理图
串口通信部分 放置了两个数字IO端口,一个终端,一个UART组件
为了判断接收成功 又放了个控制LED灯的寄存器及数字IO
我对串口接收设置了中断,串口组件的设置如下
采用19200的波特率
设置了RX中断
注意TX及RX的引脚设置
Tx引脚设置
注意其引脚模式一定要写成CMOS_Out,否则TX引脚无法输出串口数据,我就纠结了好长时间
Rx引脚设置
RX则要设置成高阻
TX 及 RX 及 led 的引脚分配
在测试串口接收的工程中 下位机把接收到的字符重新发送出去 同时LED灯发生一次闪烁
串口调试助手如下图所示
rx接收中段代码
*******************************************************************************/
CY_ISR(isr_1_Interrupt)
{
/* Place your Interrupt code here. */
/* `#START isr_1_Interrupt` */
UART_1_GetRxInterruptSource(); // clear the Status register
revFlag = 1;
/* `#END` */
}
主函数代码
extern uint8 revFlag;
void main()
{
/* Place your initialization/startup code here (e.g. MyInst_Start()) */
uint8 i = 0;
uint8 revData = 0;
uint8 flag = 1;
CYGlobalIntEnable;
isr_1_Start();
UART_1_Start();
//UART_1_LoadTxConfig();
while(1)
{
// Test Tx Mode
// UART_1_PutChar(i);
// if(i==255)
// i = 0;
// else
// i += 1;
// UART_1_PutString("Test");
// CyDelay(500); // 500msCyDelay
// Test Rx Mode
if(revFlag)
{
revFlag = 0;
// get revData;
revData = UART_1_ReadRxData(); //ok
// sent back
UART_1_PutChar(revData);
CyDelay(100);
// Test RX INIT OK
if(flag)
{
Control_Reg_1_Write(1); //??
flag = 0;
}
else
{
Control_Reg_1_Write(0); //??
flag = 1;
}
}
}
}
|
|
|
|
|
|
|
|
|
TA的每日心情 | 奋斗 2015-11-4 19:13 |
|---|
签到天数: 281 天 连续签到: 1 天 [LV.8]以坛为家I
状元
- 积分
- 6068
  
|
沙发
小鸟_愤怒
发表于 2012-10-14 00:46:05
|
只看该作者
|
|
静心 简单 认真 专注
|
|
|
|
|
|
TA的每日心情 | 奋斗 2018-8-29 20:40 |
|---|
签到天数: 1341 天 连续签到: 1 天 [LV.10]以坛为家III
状元
- 积分
- 9659
        
|
板凳
w932443004
发表于 2012-10-14 01:51:06
|
只看该作者
小鸟愤怒 发表于 2012-10-14 00:46 ![]()
顶,RX最好也接个LED
恩 不错不错 |
|
|
|
|
|
|
|
|