开发板与仿真器连接:
新建一个项目:
1-启动IAR,选择Project->Create New Projects…
2-选择C
3-然后选择路径并指定文件名,然后按Save保存
4-然后选Project->Options…设置项目属性
5-General options -> Target -> Device -> STM8S -> STM8S103F3P
6-Debugger -> Setup -> Driver -> ST-LINK
7-Debugger -> ST-LINK -> 选中Verify
编译运行项目:
1-选择Project -> Make,编译项目
(如果需要重新编译这个项目,可以选择Project -> Rebuild All)
2-选择Project -> Download and Debug, 把编译好的文件下载到电路板
3-选择Debug->Go运行程序
用IAR调试程序:
Toggle Breakpoint: 设置断点,程序运行到断点时会自动暂停
执行Download and Debug之后:
Go: 运行整个程序
Reset: 重置程序,回到第一行
Step over: 执行一条语句
View:
Disassembly: 显示C语言对应的汇编
Locals: 显示变量的值
Registers: 显示寄存器的值
Memory: 显示内存的内容
/***************************************************************************/
外部中断处理函数:(不是所有I/O都支持EXTI,reference manual P66)
外部中断设置:(头文件 #include
主要寄存器共12个,常用的有5个:
UART_SR:保存串口控制器的状态
UART_DR:保存接收或者发送的数据
UART_CR2:设置串口模式
UART_BRR1:设置波特率(baudrate)
UART_BRR2:设置波特率(baudrate)
其他:保持默认设置,即使用串口8-n-1模式
波特率具体取值可以计算,也可以参考Reference Manual的22.3.4节的Table 54
用特殊的语法定义,例如:
#pragma vector = UART1_T_TXE_vector
__interrupt void UART1_T_TXE_Handler(void) {}
#pragma vector = UART1_R_RXNE_vector
__interrupt void UART1_R_RXNE_Handler(void) {}
其中#pragma vector和__interrupt是固定的语法:
UART1_T_TXE_vector指定这个中断处理函数是用来处理串口发送完毕中断
UART1_R_RXNE_vector指定这个中断处理函数是用来处理串口接收中断
UART1_T_TXE_vector和UART1_R_RXNE_vector在头文件iostm8s103f3.h中定义
UART1_T_TXE_Handler()和UART1_R_RXNE_Handler()函数名可以是任意
*中断处理函数的内容要尽可能的短小,以免影响主程序的运行
/**************************************************************/
定时器的时钟频率可以设置:
Timer1的时钟频率 = fCK_PSC / (PSCR[15:0]+1)
Timer2/3的时钟频率 = fCK_PSC / 2^PSCR[3:0]
Update Interrupt :
设置中断发生的周期:ARR(Auto-reload register)
中断发生频率 = 定时器频率 / (AAR+1)
产生中断的时间 = 1 / 中断发生频率
以Timer2为例,假设主频为16MHz
TIM2_PSCR = 0x07; // psc=7 => prescaler=2^7 =128 => 定时器频率=16MHz/128=125KHz
*退出中断前需要对相应的状态位清零。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』