1,这个很详细,我就是在这里修改测试的
http://bbs.21ic.com/icview-1245612-1-1.html
全局变量两个
uint8_t aTxBuffer[] = "** UART__ComPolling ** \r\n";
uint8_t aRxBuffer[32];
while(HAL_UART_Receive(&huart1, (uint8_t *)aRxBuffer,3, 1000) != HAL_OK)
{//串口调试软件每次发送6个字符过来,但是单片机的接收端口设置为每次接收3个字符,
//所以可以看到在接收窗口只显示123
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);{
//将aRxBuffer的接收数据上传到串口调试软件窗口,因为在前面只接收了123,但此次上传大小为32位,
//所以 剩余补0
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);2,采用中断,按下不同的按键来点亮不同的LED,HAL配置如下
完美运行
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{在中断回调函数中加入延时出问题,会长期停在一个状态不退出。红灯长亮
3.stm32 hal 串口读取接收的数据
1、初步配置全局变量
2、在while中加入接收中断
3、在接收回调函数中做控制
4、把if放到while下也是完美运行的。
要注意ASCII码的转换,当我输入2时,读取的是十进制数2,其ASCII的数值为50.用printf实际输出的十进制数是50
5,采用16进制发送,读取16进制,就不用ASCII转换了
6、在设置PWM时,注意单位的统一。
0X2345=9029
7,只是简单的转换一下0X2345到2345d。完美运行。