初级会员

- 积分
- 80
- 金钱
- 80
- 注册时间
- 2018-2-1
- 在线时间
- 17 小时
|
10金钱
我买了一块HMI电容屏,想利用串口通讯来控制pwm
在电容屏按键按下后,用printh 01来发送0x01,在单片机端坐判断变量res==0x01,我把原子提供的串口接收程序改了,去掉了末尾要0x0d 0x0a的协议串口
接收程序
void USART1_IRQHandler(void)
{
u8 res=0;
#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
OSIntEnter();
#endif
if(USART1->SR&(1<<5)) //接收到数据
{
res=(u8)USART1->DR;
key=res;
}
#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
OSIntExit();
#endif
}
#endif
主程序
#include"timer.h"
#include"delay.h"
#include"usart.h"
#include"key.h"
#include"sys.h"
#include"motion.h"
u8 key=0;
int main()
{
Stm32_Clock_Init(9);
delay_init(72);
stm32_init();
uart_init(72,9600);
while(1)
{
PDout(11)=0;
PDout(10)=0;
PDout(9)=0;
PDout(8)=0;
if(key==0x01)
{
timer_pwm3(899,0);
}
if(key==0x08)
{
stop();
}
]
]
试了一下,不能控制pwm,但是换成简单地输出一个高电平或者低电平是可以的,为啥?
|
|